我正在试验什么可以放入C中的for循环声明以及如何使用它.我尝试了以下方法:
#include <stdio.h>
int stupid(int a)
{
if(a==3) return 1;
else return 3;
}
int main(void)
{
int i,j;
for(i=0;stupid(i)==3,i<10;i++) printf("%d\n",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它,它只是打印从1到10的号码,如果我把&&代替昏迷愚蠢的(我)== 3之间,且i <10,则程序只是打印数字0到3,为什么呢?我真的不明白这是如何工作的,我期待循环传递所有数字并"跳过"3,但继续到10,这不是真正的hapenning.有人可以向我解释为什么并指向一些更清楚解释的网站吗?先感谢您.
for循环中的第二个子句(在您的情况下stupid(i)==3,i<10
)是在循环体的每个条目之前计算的条件.如果它计算到true
那么循环体被执行.如果它计算到false
那么循环结束并且在循环体之后继续执行.
使用逗号(stupid(i)==3,i<10
),代码进行求值stupid(i)==3
,忘记结果,然后进行求值i<10
,并将该结果用于循环条件.所以你得到的数字从0到9.
stupid(i)==3 && i<10
true
只有当表达式的两个部分都为真时才会求值,所以当when 为false 时i=3
,stupid(i)==3
循环退出.