码迷,mamicode.com
首页 > 其他好文 > 详细

i++ 相比 ++i 哪个更高效?为什么?

时间:2017-08-31 14:41:26      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:编译器   产生   引用   代码   表达   ext   后缀式   pre   应该   

    ++i的效率高些,++i在运算过程中不产生临时对象,返回的就是i,是个左值,类似++i=1这样的表达式是合法的,而i++在运算的过程中会产生临时对象,返回的是零时对象的值,是个右值,像i++=1这样的表达式是非法的
对于内置类型,单独的i++和++i语句,现在的编译器基本上都会优化成++i,所以就没什么区别。
考虑内建数据类型时,它们的效率差别不大(去除编译器优化的影响)。所以在这种情况下我们大可不必关心。
现在让我们再考虑自定义数据类型(主要是指类)的情况。此时我们不需要再做很多汇编代码的分析了,因为前缀式(++i)可以返回对象的引用,而后缀式(i++)必须产生一个临时对象保存更改前对象的值并返回(实现过自定义类型++运算符定义的就知道),所以导致在大对象的时候产生了较大的复制开销,引起效率降低,因此处理使用者自定义类型(注意不是指内建类型)的时候,应该尽可能的使用前缀式地增/递减,因为他天生体质较佳。

内建数据类型的情况,效率没有区别。
自定义数据类型的情况,++i效率较高。





i++ 相比 ++i 哪个更高效?为什么?

标签:编译器   产生   引用   代码   表达   ext   后缀式   pre   应该   

原文地址:http://www.cnblogs.com/simplepaul/p/7457646.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!