关于for循环中的i++和++i??谢谢

kkting 2004-10-11 12:50:30
我觉的在for循环中,i++和++i功能是一样的!我自己验证的程序如下:

main(){
int i;
for(i=0;i<10;i++)
{printf("%d",i);}
printf("%d",i);
}
和下面这个:

main(){
int i;
for(i=0;i<10;++i)
{printf("%d",i);}
printf("%d",i);
}

请高手指教:我的观点是在for循环中,i++和++i是一样的,没有一点区别!

...全文
533 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
andycpp 2004-10-11
  • 打赏
  • 举报
回复
在这里确实没区别
oo 2004-10-11
  • 打赏
  • 举报
回复
你是对的。
yjh1982 2004-10-11
  • 打赏
  • 举报
回复
-_-
mava 2004-10-11
  • 打赏
  • 举报
回复
我觉着应该只能说,在这段程序中++i和i++没区别.
而不能说在for循环中
wz19761022 2004-10-11
  • 打赏
  • 举报
回复
To大雪无痕:
我有点看法在:cout<<++i<<i中,到最后应该是值已经作了++运算,好象不是使用你说的机智.

请批评指正.
zhangfjj 2004-10-11
  • 打赏
  • 举报
回复
int i = 0;
cout<<"i = "<<i++;
cout<< "After i++ i = "<<i<<endl;

i = 0;
cout<<"i = "<<++i;
cout<< "After ++i i = "<<i<<endl;

============
i++ 后缀,先取i的值作表达式的值,再使i加1
++i 前缀,先使i加1,再取i的值作表达式的值
所以脱离具体情况讨论是没有意义的,
当不用表达式的值时,二者是完全相同的,即使i+1
而当要用表达式的值时,这时才有区别。
楼主的话也说得不清楚
wz19761022 2004-10-11
  • 打赏
  • 举报
回复
To楼上:
我有点看法在:cout<<++i<<i中,到最后应该是值已经作了++运算,好象不是使用你说的机智.

请批评指正.
3DO314li 2004-10-11
  • 打赏
  • 举报
回复
不是你的i++和++i没有区别;而是你的例子不对。
i++ 和 ++i执行到下面的一条语句的时候,其实都是加1;
但是在i++,或者++i这条语句的时候,他们的意思是不同的。

#include <stdio.h>
#include <iostream>
using namespace std;

void main()
{
int i = 0;
cout<<"i = "<<i++;
cout<< "After i++ i = "<<i<<endl;

i = 0;
cout<<"i = "<<++i;
cout<< "After ++i i = "<<i<<endl;

cin>>i;
}
这个例子你就知道他们的区别了!!
kobefly 2004-10-11
  • 打赏
  • 举报
回复
楼主
是对的啊
呵呵
wytianjiao 2004-10-11
  • 打赏
  • 举报
回复
在这里当然是一样的,要是cout<<++i<<i;和
cout<<++i;
cout<<i;
输出就不一样了

更何况仅仅在for循环中,也要看实际的编译器的环境,才能确定是不是用了生成副本的机制,即暂时的拷贝构造函数
xylr 2004-10-11
  • 打赏
  • 举报
回复
你的理解正确
wz19761022 2004-10-11
  • 打赏
  • 举报
回复
具体情况要看编译器不同编译器可能有所不同,不能一概而论.
zhangfjj 2004-10-11
  • 打赏
  • 举报
回复
for(i=0;i<10;i++)
{...
}
==>
i=0;
while(i<10)
{...
i++; //丢弃了表达式的值,所以i++也好,++i也好,都一样!
}

sqfeiyu 2004-10-11
  • 打赏
  • 举报
回复
for循环條件中的i++和++i是沒有區別的.
zfowen 2004-10-11
  • 打赏
  • 举报
回复
可能有效率上的区别,i++这个表达式要先把表达式的值传出,再对i进行自加,因此
需要一个临时变量来保存表达式的值,而++i先对i自加,再传出表达式的值的时候直接
把i传出就可以了,不需临时变量。
道理上讲大概是这样,也许有很多编译器会做优化,发现表达式值没有用到就省略了
临时变量。因此实际应用中可以说是没区别吧。
winco 2004-10-11
  • 打赏
  • 举报
回复
u are right.
maybe the only difference is that "i++" will produce a copy.

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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