请教关于c语言问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:09:30
有一下程序,问输出结果是什么?
main()
{
int s,i;
for (s=0, i=1; i<3; i++,s+=i);
printf("%d\n",s);
}
答案是5;我算出来是01,还以为是答案有问题,于是编出来运行了一下——果然是5;崩溃了……
请诸位高手不惜赐教!小生这厢谢过了!!!

问题出在循环括号里面的i++,s+=i;
逗号运算符,从左到右,每次先执行i++,再执行s+=i;
所以第一次循环s+=2 //s=2;
第二次循环 s+=3 //s=5;

注意下细节就行了同学^_^

先s=0, i=1这时候没什么变化,只是表达式值为1
i=1<3,所以执行循环。但是循环体是空的。就直接运算i++,s+=i啦
i=2,s=2;
再因为i=2还是小于3,再循环。i++,s+=i,之后i=3,s=5
因为i=3啦,退出循环。
打印出来的s就等于5啦

main()
{
int s,i;
for (s=0, i=1; i<3; i++,s+=i);
printf("%d\n",s);
}
//的确是5

第一圈循环的时候i++,那么i==2;那么s+=i, s==2了;
第一圈循环的时候i==2 那么i<3为真,然后i++,那么i==3;那么s+=i, s==5了;

for循环2次,i=1与i=2两次
i=1时,i++,s+=i执行后,s += 2;s = 2;
i=2时,执行后s += 3; s = 5;
没问题了吧!??

你要注意for后面那个小分号;

他们都说了 我还没说什么呢....