c / c ++ for循环条件语句

时间:2013-01-29 02:49:41

标签: c loops for-loop

人,

我在for循环中添加了一个逻辑表达式,它的行为与我的预期不符。你能对我发光吗?非常感谢。

以下代码可以正常使用

for (i=0;i<N;++i)
    if (a[i] == 1){
        ....
    }

我尝试用这种方式编写它,似乎完全跳过for循环。

for (i=0;i<N && a[i]==1;++i){
    ....
}

第二种方式出了什么问题?

3 个答案:

答案 0 :(得分:4)

当条件为真时,循环继续。请记住,for-loop for(A; B; C)可以替换为[概念]:

A;
while(B)
{
   ...
   C;
}

所以,你有:

i = 0;
while(i < N && a[i] == 1)
{
   ...
   i++;
}

所以,如果在第一个实例中[i]不是1,那么你永远不会进入循环,只是去找之后的任何东西。它可能不是你想要做的,这就是为什么它没有做你想要的......;)

答案 1 :(得分:0)

此代码:

for (i=0;i<N;++i)
    if (a[i] == 1){

意味着,递增i,从0开始,一直持续到大于或等于N,对于a[]中的每个元素,检查它是否等于1

此代码:

while(i < N && a[i] == 1)

只要i小于N并且a[i]等于1,就表示循环。因此,只要这些条件中的任何一个为假,它就会从循环中断开。

答案 2 :(得分:0)

如果[0]!= 1,你永远不会进入循环。这就是你的for循环执行的条件就像我&lt; N也是。