2017-03-06 38 views
1

爲什麼這個代碼不打印真棒While循環進入無限循環當0,1

#include <iostream> 
using namespace std; 
int main() { 
    while (1, 0) { 
     cout << "awesome\n"; 
    } 
    return 0; 
} 

但這個代碼打印真棒無限次

#include <iostream> 
using namespace std; 
int main() { 
    while (0, 1) { 
     cout << "awesome\n"; 
    } 
    return 0; 
} 

我用G ++編譯器

回答

1

因爲您使用的是逗號運算符(Does while loop have two Arguments?),它將計算第一個操作數(在逗號前面)並返回第二個操作數。

這意味着在你的第一個循環中,你在做while(0),0評估爲false(立即結束)。在你的第二個你做while(1),和1被評估爲true(無限循環)。

2

因爲while循環不關心表達式的第一部分。

#include<iostream> 
    using namespace std; 

int main(){ 
    while(0 <- ,1){cout<<"awesome\n";} 
    return 0; 
} 

這部分將被忽略。用-Wall編譯你的代碼。

如果這部分將被忽略,則代碼在第一個示例中爲false,在最後一個示例中爲true。

+0

謝謝@ aperture_dev –

+1

它關心第一部分,它只是不使用結果。如果你有一個int並在這裏增加它,它會工作 – Asoub

+0

是的,你是對的。但時間表達並不關心它。 –