初学者C“==”总是评估为假

时间:2013-05-29 00:23:48

标签: c++ c for-loop conditional conditional-statements

只是一个初学者问题。我试图找到答案,但我不能。

为什么

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;
}

谢谢!

6 个答案:

答案 0 :(得分:3)

C ++ 101:中间条件必须为true才能继续循环。

答案 1 :(得分:2)

for循环基本上意味着只要中间条件为真就继续。

所以循环,在这种情况下只会在i == 10时继续。因此它不会停止。

答案 2 :(得分:1)

因为第一个循环中的条件仅表示在i等于10时递增。您将i设置为0,因此它永远不会递增,因为它无法到达那里。

第二个是有效的,因为你说i等于0,而i小于或等于10,它增加1. 0小于10,但不相等它。

答案 3 :(得分:0)

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

理解这一点的关键是每次条件评估为TRUE时身体都会执行。在您的示例中,它首次计算为FALSE,因此不执行任何操作。

在第二个示例中,省略了 condition 。这意味着身体永远执行,直到你突破它。当你= = 10时你会这样做。因此身体会执行10次。

答案 4 :(得分:0)

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

条件应为true才能进入循环, 在你的情况下,i == 10返回false,因此它不会进入循环。

答案 5 :(得分:0)

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

对于此代码i = 0最初,当检查条件(i == 10)时,它会导致错误,因此循环不会迭代。

仔细检查您想要运行循环的i值。

例如你的循环可能是

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

循环体将从0迭代到10,包括两者。