繁体   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