5

我不知道以前是否有人问过这个问题,但我仍然无法找到答案。我的问题是这个;在 For 循环中,这是可以接受的。

int k = 0;

for (int i = 0; i <= 10; i++)
    k++;

但这不是:

int k = 0;

for (int i = 0; i == 10; i++)
    k++;

为什么我不能使用'=='来判断条件是否满足?我的意思是,这两个表达式都根据情况返回 true 或 false,而后者适用于例如 If 循环。

int k = 10;

if (k == 10)
{
    // Do stuff.
}

在我作为业余程序员期间,这个问题的答案一直困扰着我很长一段时间,但我直到现在才搜索它。

4

4 回答 4

17

for满足条件时将运行一个循环。一开始i = 0,所以你的测试i == 10永远不会满足,因此循环体永远不会执行。

另一方面,您可以使用i == 0条件并且循环只会执行一次:

for (int i = 0; i == 0; i++)
    k++;

这就是为什么如果您希望 for 循环执行多次,您需要为迭代器变量提供一个条件,即<>该迭代器变量递增/递减时,它可以多次满足。

于 2013-09-14T08:17:51.173 回答
7

For 循环一直有效,直到条件为真,因此您可以编写

for (int i = 0; i <= 10; i++)
k++;
于 2013-09-14T08:41:05.357 回答
6

当您输入 i==10 时,它会检查 i 的条件是否等于 10。显然 i =0 在初始阶段,所以循环爆发

所以如果你想在某些情况下打破循环,那么最好你应该使用

for (int i = 0; i <= 10; i++)
{
    if(i==5) // test with your condition
    break;
    k++;

}
于 2013-09-14T08:18:16.050 回答
1

你绝对可以写出这样的条件。

这没有多大意义。

for这是循环的分解语法:

for(<initial statement>;<boolean expression - keep going while true>;<statement performed after each iteration>)

所以在你描述的典型场景中

for (int i = 0; i <= 10; i++)
    k++;

最初的声明是i. 只要i保持 10 或更少,循环就会运行,并且在每次迭代i后将递增 1。

总而言之 - 你完全可以写i == 10,只是它没有多大意义,因为循环不会运行,因为i已经是 0。如果你用int i = 10then 替换了初始条件,它将只运行一次。您也可以写i != 10为条件,然后循环将执行 10 次。

于 2013-09-14T08:20:40.053 回答