0

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

为什么

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

谢谢!

4

6 回答 6

3

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

于 2013-05-29T00:25:44.477 回答
2

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

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

于 2013-05-29T00:27:13.300 回答
1

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

第二个有效,因为您说i等于0,而i小于或等于10,则增加1。0小于10,但不等于它。

于 2018-02-01T05:31:23.270 回答
0
for (int i = 0; <condition>;++i) {
/* body of the for loop */
}

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

在您的第二个示例中,省略了条件。这意味着身体永远执行,直到你摆脱它。当 i == 10 时您会执行此操作。因此,主体执行 10 次。

于 2013-05-29T00:40:00.940 回答
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,包括两者。

于 2013-05-29T05:22:16.247 回答
0

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

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

于 2013-05-29T01:34:06.163 回答