给我看下C的运行结果

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:20:11
main()
{
int s,i;
for(s=0,i+1;i<3;i++,s+=i);
printf("%d\n",s);
}

我头脑运行的结果是3,而电脑运行的结果是5,到底它是如何运行的?

我也是初心者,就说说自己的看法,不对之处还望高手指教。

for(s=0,i+1;i<3;s+=i,i++);
似乎应为:
for(s=0,i=1;i<3;s+=i,i++);

因为1<3,所以先i=1+1=2,后s=2+0=2
因为2<3,所以先i=2+1,后s=2+3=5
然后跳出循环

如果程序变成

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

则答案是3

c语言规定,变量赋值以后才能被引用,此程序中,变量i没有赋予初值就引用了,c语言中如果没有指明变量是自动变量还是静态变量,系统默认为自动变量,对于自动变量,如果不赋予初值,变量的值是不定的,静态变量,未赋值之前,默认都是零,此程序中,i+1应该是i=1吧,如果是的话最后结果是5没有错,因为在for循环中,最后的i++,s+=i是逗号表达式,逗号表达式是从左往右依次进行计算,最后返回的值是最右边表达式的值。