为什么我不能在For循环中使用==?

时间:2013-09-14 08:14:51

标签: c# for-loop

我不知道以前是否曾经问过,但我还是找不到答案。我的问题是这个;在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 个答案:

答案 0 :(得分:15)

条件满足时将运行for循环。在开始i = 0时,您的测试i == 10永远不会被满足,因此循环的主体永远不会被执行。

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

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

这就是为什么如果你想要一个for循环执行多次,你需要为<>的迭代器变量提供一个条件,这样它就可以满足一旦这个迭代器变量递增/递减。

答案 1 :(得分:7)

For循环工作直到条件为真,所以你可以写

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

答案 2 :(得分:5)

当你把i == 10时,它会检查i的条件是否等于10。显然在初始阶段i = 0,所以循环突然出现

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

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

}

答案 3 :(得分: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 = 10的条件然后它将只运行一次。你也可以写i != 10作为条件,然后循环执行10次。