人,
我在for循环中添加了一个逻辑表达式,它的行为与我的预期不符。你能对我发光吗?非常感谢。
以下代码可以正常使用
for (i=0;i<N;++i)
if (a[i] == 1){
....
}
我尝试用这种方式编写它,似乎完全跳过for循环。
for (i=0;i<N && a[i]==1;++i){
....
}
第二种方式出了什么问题?
答案 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也是。