一道简单C语言编程,帮忙分析一下

来源:百度知道 编辑:UC知道 时间:2024/05/11 04:25:36
main()
{int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
运行结果是5,帮忙分析一下运行过程
第一次循环i就直接变为2吗?本来我认为i=1的时候,s=1+0=1;然后再继续第二次i=2,s=1+2=3;第三次i=3,s=1+2+3=6
在循环里面的i++我一直不很懂,以前我以为是进行完一次循环后,i再++,就好象i本来是1,用printf输出printf("%d",i++);结果输出1,输完后i再++变为2。
请简单解释一下这个问题

main()
{int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
s=0,i=0是并列的起始条件;只有一个判断条件i<3;
两个可循环条件i++,s+=i;
现在看循环第一次执行s=0,i=0经判断语句i<3符合执行下个语句i++,s+=i;其中‘,'运算符是自左向右执行i++后,i就等于2,再执行s+=i,s=i+s=2;
i=2<3执行第2次循环此时s=2,i=2;再执行i++,i=3(i++就是i+1)再执行s+=i,s=i+s=5
所以s=5了
最后提到这个for循环可等价于:
前面赋初值i=1;s=0;
int i=1,s=0;
if(i<3)
{
i++;
s+=i;
}

main()
{int s,i; /*定义s,i实型*/
for(s=0,i=1;i<3;i++,s+=i); /*此句为空循环 第一次 i=2,s=0+2=2第二次 i=3, s=2+3=5*/
printf("%d\n",s);/*输出s 值*/
}

运行结果为5

for循环后面加;是空循环 无循环体 只执行for里面的表达式

,表达式是先求借表达式1在求借表达式2

s+=i如果在下面就等于3了~
for(s=0,i=1;i<3;i++);
s+=i;

这个也没弄明白,因为不会在FOR里面用那么多东西
明白了楼上的意思~

1楼讲的好啊,受教了~~

只循环2次,执行i++,s+=i后,先i=2,S=2,
第2次循环i++,s+=i后i=3,S=5:
当i=3是循环结束,即 不执行!