for(i=0;i<3;++i)和for(i=0;i<3;i++)输出的i值怎么没区别?脑子有点乱了。

ln6twf 2009-06-22 05:15:05
在我的理解前面的输出值是:1,2。
后面是:0,1,2.
但实际值都是:0,1,2.
乱了,有点乱。
...全文
1621 91 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
91 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiveyes 2009-08-03
  • 打赏
  • 举报
回复
#include <iostream.h>

int main()
{
int k=0;
for(int i=0;i<3;k=(i++)*2) //换成++i,就会看到区别了
cout << k << endl;
return 0;
}
cmf41013 2009-08-01
  • 打赏
  • 举报
回复
没有认真看书
密斯刘 2009-08-01
  • 打赏
  • 举报
回复
一样的结果 for循环我一般都是写i++的
zhoutt1989 2009-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arong1234 的回复:]
为什么前面会是12?进循环首先执行第一个子句,然后执行中间子句,然后执行循环体,然后再执行++i,根本不会出现你所谓的++i/i++会影响整个循环的问题,++i/i++的顺序问题只影响for的第三个子句,不影响整个循环
[/Quote]
同意
「已注销」 2009-07-31
  • 打赏
  • 举报
回复
012 012
Lawrencewt 2009-07-30
  • 打赏
  • 举报
回复
for的执行过程
1:i=0
2:判断i <3,为真转3,为假转6
3:循环体...
4:i=i+1;
5:转2
6:出循环...

正解.........................................................................
王夸父 2009-07-27
  • 打赏
  • 举报
回复
因为你的printf("%d",i);是在++i;前面执行的for(i=0;i<3;++i)的执行顺序是i=0;然后判断i<3;满足则执行{。。。。}里面的语句,最后执行++i;故你的输出结果和i++的结果一样。
Cloud__Apex 2009-07-27
  • 打赏
  • 举报
回复
++i 和 i++ 要明白是什么意思啊 ,循环里面的 ++i 和 i++ 其结果都是 多加了1而已
shark1682003 2009-07-27
  • 打赏
  • 举报
回复
赞成四楼的回答,应该明白for循环的执行顺序
chjsatan 2009-07-27
  • 打赏
  • 举报
回复
不显示删除回复显示所有回复显示星级回复显示得分回复 for(i=0;i<3;++i)和for(i=0;i<3;i++)中的++i和i++只是i变量什么时候用到的问题而已 ++i的是这个式子的变量先用 在相加 i++的是i的先用在相加改变了i++的值
i=0,++i;的时候++i先把值传给前面的变量再i加1的 所以式子的值是0而i是1
而i=0,i++;中 i是先加1在把值传给式子i++,所以式子是1而式子是1


似乎是这么回事的 好久没有接触这个东西了 祝你愉快
amossavez 2009-07-26
  • 打赏
  • 举报
回复
是选执行循环体,在执行第三个子句的!没区别
xixuer_20070803 2009-07-26
  • 打赏
  • 举报
回复
一点区别都没;
这是他们单独作为一个语句,得到的结果每次一样,对循环没有任何影响 ;
如果是把他们的结果赋值的话会有差一个的区别,应用不在这里
neverfailor 2009-07-25
  • 打赏
  • 举报
回复
单独使用的话
++i和i++是没有区别的!
十八道胡同 2009-07-25
  • 打赏
  • 举报
回复
对于单个句子
i++;++i;是没有区别的
有区别的在于
b=i++;
b=++i;这种的
stuqbx 2009-07-24
  • 打赏
  • 举报
回复
不好意思写错了!
第一次循环执行完输出0 第二次输出1 第三次输出2
stuqbx 2009-07-24
  • 打赏
  • 举报
回复
for(i=0;i <3;/*1.先执行这两句*/ ++i/*3.最后在执行这句*/)
{
cout < <i < <endl; /*2.再执行这句*/
}
//第一次循环执行完输出0 第二次输出2 第三次输出3
同理,
for(i=0;i <3;/*1.先执行这两句*/ i++/*3.最后在执行这句*/)
{
cout < <i < <endl; /*2.再执行这句*/
}
//第一次循环执行完输出0 第二次输出2 第三次输出3
stuqbx 2009-07-24
  • 打赏
  • 举报
回复
for(i=0;i <3;/*1.先执行这两句*/ ++i/*3.最后在执行这句*/)
{
cout < <i < <endl; /*2.再执行这句*/
}
//第一次循环执行完输出0 第二次输出2 第三次输出3
同理,
for(i=0;i <3;/*1.先执行这两句*/ i++/*3.最后在执行这句*/)
{
cout < <i < <endl; /*2.再执行这句*/
}
//第一次循环执行完输出0 第二次输出2 第三次输出3
kellyschurz 2009-07-24
  • 打赏
  • 举报
回复
15楼是正确的!
Angleyuhj 2009-07-23
  • 打赏
  • 举报
回复
输出时机的问题……
jackyloncoln 2009-07-23
  • 打赏
  • 举报
回复

for(i=0;i <3;i++)
{
cout < <i < <endl;
}


for(i=0;i <3;)
{
cout < <i < <endl;
i++;
}

上面两个for语句的输出是一样的。
加载更多回复(71)

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧