社区
C语言
帖子详情
i++ 与 ++i 的效率哪个更高?
guirenwang
2008-07-23 12:12:17
今天我同学说 ++i 比 i++ 的效率更加高一些,因为他在某个地方看到严蔚敏老师是这么说的。我想问下csdn的大牛们,这是真的吗,能不能给一下解释了,小弟先在此谢过了。
...全文
2837
64
打赏
收藏
i++ 与 ++i 的效率哪个更高?
今天我同学说 ++i 比 i++ 的效率更加高一些,因为他在某个地方看到严蔚敏老师是这么说的。我想问下csdn的大牛们,这是真的吗,能不能给一下解释了,小弟先在此谢过了。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
MoreWindows白话经典算法之七大排序(高清版)
这是本人在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法,这些文章不仅使我在考试中取了不错的成绩,也为后来顺利面过迅雷,腾讯,微软打下了良好的基础,现在整理成电子书形式,希望能对大家有所帮助。
i
++
与
++
i哪个
效率
更高
?
答案: 在内建数据类型的情况下,
效率
没有区别; 在自定义数据类型的情况下,
++
i
效率
更高
! 分析: (自定义数据类型的情况下)
++
i返回对象的引用; i
++
总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。 (重载这两个运算符如下) class Integer{ public: Integer(long data):m
i
++
和
++
i哪个
效率
更高
今天看书无意间发现一个问题,i
++
和
++
i哪个
效率
更高
,看了解释和汇编的过程,还是很有收获的,总结如下:在内建数据库类型的情况下,
效率
没有区别;在自定义数据类型的情况下,
++
i
效率
较高。原因如下:
++
i在运算过程中不产生临时对象,返回的就是i,是个左值,类似
++
i=1这样的表达式是合法的,而i
++
在运算的过程中会产生临时对象,返回的是零时对象的值,是个右值,像i
++
=1这样的表达式是非法的。简单说...
i = i+1 i +=1 i
++
哪个
效率
更高
i = i+1 i +=1 i
++
哪个
效率
更高
?为什么?分析: 第一个:i = i+1
效率
最低步骤:1. 读取右i的地址 2. i+1 3. 读取左i的地址 4.将右值传给左i(编译器并不认为左右i的地址相同)。第二个: i += 1
效率
其次步骤:1. 读取右i的地址 2. i+1 3. 将...
i
++
与
++
i 的
效率
哪个
更高
++
i 比 i
++
的
效率
更加高一些,
++
i 不用生成临时变量而 i
++
要生成临时变量。
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章