#include <stdio.h>
int main()
{
int sum, num;
for (sum = 0, num = 0; num <= 3 && sum <= 5 && 1; num++, sum++)
{
sum += num;
printf("num=%d,sum=%d\n", num, sum);
}
return 0;
}
这个代码运行结果:num=0,sum=0
num=1,sum=2
num=2,sum=5
我的理解是num循环到1就结束了,为什么循环到2才结束?
C语言中只要不是1就会认为是真。
for中的判断部分是 num = 0; num <= 3 && sum <= 5 && 1,意思是 num <= 3, sum <= 5 都成立才行。最后的那个1是个整型字面量,在逻辑表达式中所有非0整型值都为true,所以最后这个逻辑与对判断没有影响(要是这里为0,那整个判断部分就为false,循环就不会执行了)。
可以看到循环3次时都满足要求。但在第4次循环开始前,num是3,sum是6,sum不满足循环条件了,所以不会有第4次循环。