簡體   English   中英

初學者C“ ==”始終計算為false

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM