社区
C语言
帖子详情
i++ 与 ++i 的效率哪个更高?
guirenwang
2008-07-23 12:12:17
今天我同学说 ++i 比 i++ 的效率更加高一些,因为他在某个地方看到严蔚敏老师是这么说的。我想问下csdn的大牛们,这是真的吗,能不能给一下解释了,小弟先在此谢过了。
...全文
2900
64
打赏
收藏
i++ 与 ++i 的效率哪个更高?
今天我同学说 ++i 比 i++ 的效率更加高一些,因为他在某个地方看到严蔚敏老师是这么说的。我想问下csdn的大牛们,这是真的吗,能不能给一下解释了,小弟先在此谢过了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
64 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
散自在
2012-08-03
打赏
举报
回复
++$i 效率高于 $i++
melody_ye
2011-11-06
打赏
举报
回复
学习了.
达能猫
2010-09-08
打赏
举报
回复
用objdump看一下就知道了,没区别的,STL我没试过
liuchang5772
2008-07-26
打赏
举报
回复
飘过,学习一下。我刚知道
yuhaozx
2008-07-25
打赏
举报
回复
考虑是否生成临时变量
考虑编译器的水平,
看看汇编生成的代码
yangfanchina
2008-07-25
打赏
举报
回复
mark一下,好帖,好帖
xuxingok
2008-07-25
打赏
举报
回复
当然是++i了
不过也看编译器,有的会优化i++的!
runtospring
2008-07-25
打赏
举报
回复
++i是在用i之前加1,i++是在用了i后加一,这个也有速度快慢吗?
NKLoveRene
2008-07-25
打赏
举报
回复
++i
JIGSONG
2008-07-25
打赏
举报
回复
验证12楼第一条;
学习12楼。
[Quote=引用 25 楼 guanchunsheng 的回复:]
引用 24 楼 guanchunsheng 的回复:
搭车问一下,VC6里的disassembly窗口里看到的就是编译生成的汇编么?
如下
a++;
Assembly code
0040102F mov eax,dword ptr [ebp-4]
00401032 add eax,1
00401035 mov dword ptr [ebp-4],eax
++a;
Assembly code
00401038 mov ecx,dword ptr [ebp-4]
0040103B add ecx,1
0040103E mov dword ptr [ebp-4],ecx …
[/Quote]
tfnadnt
2008-07-25
打赏
举报
回复
学习
heishanyizu
2008-07-25
打赏
举报
回复
简单的说:
i++(在c++中)在实现的时候,系统会产
生了一个local object class INT;
++i
INT INT::operator++()
{
*this=*this+1;
return *this;
}
i++
const INT INT::operator ++(int)
{
INT oldvalue=*this;
*this=*this+1;
return oldvalue
}
所以从效率上来说++i比i++更效率 但是对于单纯的 ++i 和 i++ 没什么区别 因为前而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。对于int对象和指针,编译器可优化掉这项额外工作
Walker-cheng
2008-07-25
打赏
举报
回复
考虑编译器的水平
1、对于内置数据类型,以现在的编译器的优化水平,前++和后++没区别的,这个可以通过看汇编代码证明
2、对于自定义数据类型,像STL,前++的效率要高于后++,所以STL中关于iterator都是前++的
Andrwyw
2008-07-24
打赏
举报
回复
学习`
lxl843
2008-07-24
打赏
举报
回复
++i
csz_1987
2008-07-24
打赏
举报
回复
学习了。。。
sunyuqian
2008-07-24
打赏
举报
回复
[Quote=引用 7 楼 hemiya 的回复:]
如果是内置类型如int单语句i++和++i没区别;
如果i是自定义的类型重载的后置++和前置++,有区别。
前置比后置效率高.
[/Quote]
学习
guirenwang
2008-07-24
打赏
举报
回复
谢谢各位高手的指点,我给帖子加分,希望大家可以更深入的探讨。
eric_0206
2008-07-23
打赏
举报
回复
请教一下,C编译器的汇编怎么看~?或者说哪里能看到~?
visame
2008-07-23
打赏
举报
回复
同意该说法
++i 不用生成临时变量而 i++要生成临时变量
加载更多回复(43)
i
++
和
++
i 哪个
效率
更高
关于i
++
和
++
i的
效率
问题,通常在内建数据类型中两者无明显差异,即使在汇编层面也表现一致。但在处理自定义类型时,特别是大对象,由于后缀式会返回对象的值造成复制开销,
效率
可能低于前缀式。因此,建议在自定义类型中优先使用
++
i以提高
效率
。
++
i 与i
++
哪个
效率
更高
?
本文探讨了前缀自增运算符(
++
i)与后缀自增运算符(i
++
)在内建数据类型及自定义数据类型上的
效率
差异。对于内建数据类型,两者
效率
相当;而在自定义数据类型中,前缀自增因避免了临时对象的创建,
效率
更高
。
++
i和i
++
哪个
效率
更高
本文探讨了在自定义数据类型情况下,前缀
++
i与后缀i
++
的
效率
差异。通过重载运算符,分析表明
++
i返回对象引用,而i
++
需创建并销毁临时对象,因此
++
i
效率
更高
。
i
++
与
++
i哪个
效率
更高
?
本文通过自定义Integer类重载前置
++
i与后置i
++
运算符,对比了两者在
效率
上的差异。实验表明,在自定义数据类型情况下,前置
++
i
效率
更高
,因为它直接返回对象的引用,而i
++
需要创建并销毁临时对象。
C
++
i
++
和
++
i哪个
效率
更高
本文通过VC
++
6.0编译的C语言代码实例,分析了前缀递增(
++
i)与后缀递增(i
++
)在内建数据类型与自定义数据类型中的
效率
差异。实验表明,在内建数据类型中两者
效率
相近,但在处理自定义数据类型时,前缀递增因能直接返回对象引用而避免了大对象复制的开销,
效率
更高
。
C语言
70,037
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章