当前位置: 代码迷 >> C语言 >> 执行语句: for(i=1;i++
  详细解决方案

执行语句: for(i=1;i++

热度:167   发布时间:2006-06-13 10:39:06.0
以下是引用joylmj在2006-6-12 13:44:06的发言:
第1次循环,i=1;(i++)=1;1<4成立执行空语句 ;,此时,i=2;//i=1,跳出本循环i才自增,以下类同
第2次循环,i=2;(i++)=2;2<4成立执行空语句 ;,此时,i=3;
第3次循环,i=3;(i++)=3;3<4成立执行空语句 ;,此时,i=4;
第4次循环,i=4;(i++)=4;4<4不成立跳出循环,同时执行了i++语句,i进行了自增运算,故i=5;

我是这么分析的,有点烦琐,呵呵!

你的分析错误的.

int i,j;
for(i=0;i<10;i++)
{
printf("%d\n",i);
getch();
}
for(j=0;j<10;++j)
{
printf("%d\n",j);
getch();
}


----------------解决方案--------------------------------------------------------
我好象误会18楼的意思了
----------------解决方案--------------------------------------------------------
嘿嘿,我可以帮你偷偷修改
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

最后是 5


----------------解决方案--------------------------------------------------------
[分享]
像以后这类题务必要思考清楚,一般对其相应 汇编语言应该有所了解,一旦掌握以后才能更加深入的了解编译过程.这个题应该是5
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-13 06:56:58
private

等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
  得分:0 
i的值是5
因为i++<4 是在表达式里 所以用完后再加1
当i=4时 也是要执行 i++ < 4 这个表达式的 (虽然不成立,但做了判断)
用完后要自动加1;
所以i的值是 5;
----------------解决方案--------------------------------------------------------
楼上朋友private的分析既简练又到位。
实际上表达式
(i++ < 4)
可理解为
(temp=i,i=i+1,temp<4)

----------------解决方案--------------------------------------------------------
是这样的:
for(i=1;i++<4;);
第一次循环后:i++的值为1,i=2;
第2次循环后:i++的值为2,i=3;
第3次循环后:i++的值为3,i=4;
最后还会返回for(i=1;i++<4;);i++再与4比较
因此执行i++后i=5.

----------------解决方案--------------------------------------------------------
  相关解决方案