int x=1;
f()
{
static int i=2;int x=10;
x+=++i;
printf("%d",x);
}
main()
{ int i;
for(i=1;i<4;i++) {++x; f();}
printf("%d\n",x);
}
输出答案是13,14,15,4 怎么的来得 详细说下运行步骤
for语句不是先执行=1;i<4;然后执行++x;然后再到i++等这条件不成了后才执行下面的语句f()吗?
追答for(i=1;i<4;i++)
{
++x;
f();
}
你看一下你的for语句是用大括号把 这两条语句都括起来了啊,所以肯定是执行一条++x之后,就要执行一次 f();
如果是:
for(i=1;i<4;i++) ++x;
f();
这样子就先执行完for循环,最后执行f();
从main()
开始
i=1<4
main()中x自加,所以x=2,调用f()
x=10+(2+1)=13(在这里x是局部变量,用f里面的x,i同理)
第二轮
i(mian()里面的i)=2<4
main()中x自加,所以x=3,调用f()
x=10+(3+1)=14(在这里x是局部变量,用f里面的x,i是静态变量,不能赋初始值,所以i是上一轮的结果,是3)
第三轮
i(mian()里面的i)=3<4
main()中x自加,所以x=4,调用f()
x=10+(4+1)=15(在这里x是局部变量,用f里面的x,i是静态变量,不能赋初始值,所以i是上一轮的结果,是4)
i(mian()里面的i)=4,
退出循环
x就是刚才的x(mian()中的x)结果
是4
输出
13 14 15 4