#include<stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;i<=100,sum+=i;i++)
printf("%d\n",sum);
return 0;
}
#include<stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;sum+=i,i<=100;i++)
printf("%d\n",sum);
return 0;
}
i<=100,sum+=i
这样会死循环的原因是这是一个逗号表达式,表达式的结果是最右侧表达式的结果,由于sum+=i始终大于0,所以死循环了
交换顺序后
sum+=i,i<=100
整个表达式的结果是最右侧的i<=100的结果,显然当i大于100时就会结束循环
i<=100,sum+=i
逗号表达式,最终取最后的结果。
所以等价于判断条件是sum+=i
i<=100,sum+=i是逗号表达式,这个表达式的值是sum+=i; i初始值是1,所以sum是非0的数,所以就是死循环。
for(i=1,sum=0;i<=100,sum+=i;i++)改成 for(i=1,sum=0;i<=100;i++) sum+=i;