社区
C语言
帖子详情
i++ 与 ++i 的效率哪个更高?
guirenwang
2008-07-23 12:12:17
今天我同学说 ++i 比 i++ 的效率更加高一些,因为他在某个地方看到严蔚敏老师是这么说的。我想问下csdn的大牛们,这是真的吗,能不能给一下解释了,小弟先在此谢过了。
...全文
2798
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)
I2C通信详解-1.12.ARM裸机第十二部分
本期课程主要讲解I2C通信协议的基本概念和编程分析。首先简单介绍I2C通信的基本特征,然后详细讲解了I2C通信的时序图,并且通过I2C的时序图讲解了通信物理层的时序概念。之后介绍了S5PV210的I2C控制器、gsensor芯片的I2C通信流程图,后分析了相关的代码。本课程的目标是让大家对I2C通信有框架性的认识,对编程中数据手册、时序图、流程图和代码之间的关联有所认识。
一文带你彻底搞懂i
++
和
++
i的区别,谁的
效率
更高
?
作者简介:Codebowl靓仔,学妹的工具人,C
++
开发误入数据开发,梦想30岁退休的靓仔就是我啦。 i
++
和
++
i对于初学者来说,一直是一个特别容易搞混的内容,相信很多人现在也没有完全搞清(作者初学的时候就一直稀里糊涂的,老师在讲这个的时候也一笔带过了)。 不过今天不用怕,看完这篇文章,相信你一定能搞清楚这俩个的区别! 一文带你彻底搞懂i
++
和
++
i的区别,谁的
效率
更高
?基本概念
++
i和i
++
的区别i
++
和
++
i的原理单独使用时参与运算时i
++
和
++
i那个
效率
更高
? 基本概念 两者的作用都是自增加1。.
i
++
与
++
i哪个
效率
更高
?
答案: 在内建数据类型的情况下,
效率
没有区别; 在自定义数据类型的情况下,
++
i
效率
更高
! 分析: (自定义数据类型的情况下)
++
i返回对象的引用; i
++
总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。 (重载这两个运算符如下) class Integer{ public: Integer(long data):m
【C语言】i
++
和
++
i的区别是什么?哪个
效率
高?为什么?
写这篇文章主要的目的就是想把看到的一些好的C语言习题摘录下来。 执行
效率
理论上,i
++
的执行
效率
比
++
i的执行
效率
要高。
++
i不用生成临时变量,而i
++
要生成临时变量。 这个会因编译器有所区别,有的编译器会对这个流程进行优化。 例如直接汇编相应的代码,结果如下: 可以看到它们的执行
效率
是差不多的。 执行逻辑 i
++
表示先赋值后加1;i
++
实现的是,运算结束之后进行自加运算,换句话说这一句跑到分号之后才会有自加效果。
++
i表示先加1再赋值;
++
i正好相反,是在这一句的一开始就进行.
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. 将...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章