回 帖 发 新 帖 刷新版面

主题:[讨论]关于for循环i的得数

例1:
int a,i;
a=0;
for(i=1;i<6;i++)
{++a;}
printf("%d %d\n",a,i);  

例2:
int i;
for(i=1;i<6;i++)
printf("%d\n",i);

为什么同样得循环条件,i的得数不同呢? 
有人说当i值为6的时候,已经不满足例2执行输出语句的条件了,那例1就满足吗??
望高人详细讲解~

回复列表 (共4个回复)

沙发

其实两者的区别是循环体的不同  主要要理解i自加的时候  例1的结果是6   i=5时 符合条件 (在执行了{++a;}后) i变为6  6不符合条件 跳出循环输出   例2结果是1,2,3,4,5     当i=5时  先执行输出语句  再自加为6  不符合条件  跳出循环 结束    有点罗嗦

板凳

例1也不满足,只不过例1的输出在循环外,只有当i超界才会输出,而例2的在循环内,不可能输出超界值,不就是这么简单的事么,呵呵

3 楼

例2的代码可以写成:
for(i=1;i<6;i++){
printf("%d\n",i);
}

4 楼

如果你也想跟1一样输出只要写成
for(;;){}
prinf(...);

我来回复

您尚未登录,请登录后再回复。点此登录或注册