[英]beginner C “==” always evaluates to false
只是一個初學者的問題。 我試圖找到答案,但是沒有。
為什么
for (int i = 0;i==10;++i) {
/* body of the for loop */
}
永遠不要執行for循環的主體? 但是這個有效嗎?
for (int i = 0;i<=10;++i) {
/* body of the for loop */
}
(i == 0)應該是一個布爾表達式,如果i == 0,則計算為false,對嗎? 如果我將表達式放在類似if的語句中,這將非常有效
for(int i=10;;++i) {
if (i==10) break;
}
謝謝!
C ++ 101:中間條件必須為true,循環才能繼續。
for循環基本上意味着只要中間條件為真就繼續。
因此,在這種情況下,循環只會在i == 10時繼續。 因此不是它停止了。
因為您的第一個循環中的條件僅在i
等於10時才說增加。將i
設置為0,所以它永遠不會遞增,因為它無法到達那里。
第二個之所以起作用,是因為您說i
等於0,並且當i
小於或等於10時,它以1遞增。0小於10,但不等於10。
for (int i = 0; <condition>;++i) {
/* body of the for loop */
}
理解這一點的關鍵是,每當條件評估為TRUE時,身體就會執行。 在您的示例中,它本身第一次評估為FALSE,因此沒有任何執行。
在第二個示例中, 條件被省略。 這意味着身體永遠執行,直到您脫離它。 當i == 10時執行該操作。因此,身體執行了10次。
for(;true;)
{
//this is infinite loop
}
為了進入循環,條件應該為true,在您的情況下,i == 10返回false,因此不會進入循環。
for (int i = 0;i==10;++i) {
/* body of the for loop */
}
對於此代碼,i = 0最初,當檢查條件(i == 10)時,結果為false,因此循環不會迭代。
仔細檢查要運行循環的i的值。
例如你的循環可能是
for (int i = 0;i<=10;++i) {
/* body of the for loop */
}
循環的主體將從0迭代到10,包括兩者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.