2013-05-29 50 views
0

只是一個初學者的問題。我試圖找到這個答案,但我不能。初學者C「==」總是評估爲false

爲什麼

for (int i = 0;i==10;++i) { 
/* body of the for loop */ 
} 

從不執行的體內循環?但這個工程?

for (int i = 0;i<=10;++i) { 
/* body of the for loop */ 
} 

(i == 0)應該是一個布爾表達式求值爲false,如果我== 0,對不對? 這完美的作品,如果我把表達的if語句像

for(int i=10;;++i) { 
if (i==10) break; 
} 

謝謝!

+0

它只需要評估爲假一次循環停止。 –

回答

0
for (int i = 0; <condition>;++i) { 
/* body of the for loop */ 
} 

理解的關鍵,這是該機構執行每次條件計算結果爲TRUE的時間。在你的例子中,它首次評估爲FALSE,因此沒有任何執行。

在你的第二個例子中,條件被省略。這意味着身體永遠執行,直到你突破它。你在做什麼,當我== 10.因此,身體執行10次。

+2

你的回答有同樣的問題艾丹的。你的措辭是誤導性的。它不是「每次......」,因爲如果是這樣的話,提問者的循環每次都會用到'x == 10'。更準確地說,循環運行「只要」或「while」的關係是「真實的」。 –

+0

謝謝!非常詳細的解釋! – bender

3

C++ 101:中間條件必須爲真才能繼續循環。

+0

謝謝!我知道了!這是一個愚蠢的問題!謝謝! – bender

2

for循環基本上意味着只要中間條件成立就可以繼續。

所以循環,在這種情況下只會繼續當我== 10。它不是因此停止。

0

for(;true;)
{
//this is infinite loop
}

條件應以你的情況我== 10點返回false因此它不會進入循環進入循環, 是真實的。

0
 for (int i = 0;i==10;++i) { 
     /* body of the for loop */ 
     } 

對於此代碼i = 0最初,當檢查條件(i == 10)時,它導致false,因此循環不會迭代。

請仔細檢查我想要運行循環的值。

例如你的循環可以是

 for (int i = 0;i<=10;++i) { 
     /* body of the for loop */ 
     } 

循環體將迭代從0至10,包括兩者。

1

因爲第一個循環中的條件只會在i等於10時增加。您將i設置爲0,所以它永遠不會增加,因爲它無法達到此目的。

第二個工作,因爲你說i等於0,而i小於或等於10,它增加1. 0小於10,但不等於它。