請教一下,
#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;
}
這個代碼運行結(jié)果:num=0,sum=0
???????????????????????????????num=1,sum=2
???????????????????????????????num=2,sum=5
我的理解是num循環(huán)到1就結(jié)束了,為什么循環(huán)到2才結(jié)束?
2015-09-17
C語言中只要不是1就會認為是真。
2015-09-17
for中的判斷部分是 num = 0; num <= 3 && sum <= 5 && 1,意思是?num <= 3, sum <= 5 都成立才行。最后的那個1是個整型字面量,在邏輯表達式中所有非0整型值都為true,所以最后這個邏輯與對判斷沒有影響(要是這里為0,那整個判斷部分就為false,循環(huán)就不會執(zhí)行了)。
可以看到循環(huán)3次時都滿足要求。但在第4次循環(huán)開始前,num是3,sum是6,sum不滿足循環(huán)條件了,所以不會有第4次循環(huán)。