C++前置式递增和后置式递增的区别

转自: http://pppboy.blog.163.com/blog/static/30203796201041014447359/

 

◇引出:

写代码的时候一向用后置式递增,看起来好像更顺眼一些。

for (;;iter++)
{
    ///
}

iter++;

但看了《C++ Standard Library》,说前置递增效率更高,后置式递增要拷贝一个临时对象。

 

◇恐慌:

陷入恐慌中,想想以前写的代码,有种被鄙视的感觉,自卑中。。。。

 

◇查找VS研究:

成果1

int b = i++; 
//可以分解为一下过程:  
int temp = i;  
b = temp;  
i = i + 1;

成果2

n++要开辟一个变量来保存n的值并返回,然后让n这个变量中的值加 1。而++n直接把1加到n这个变量的空间中去,并返回n这个空间中的值,没有开辟任何临时空间,性能更高。

成果3

const Counter Counter::operator++(int)  
{  
    Counter temp(*this);  
    ++itsVal;//数据成员  
    return temp; 
} 

成果4

n+=1与n=n+1在结果上是等价的。但使用复合赋值操作符+=时,直接把1加到变量n的空间中去,左操作数只计算了一次加法;而使用长表达式 n=n+1时,先要去n这个变量空间中去取值(要寻址),与1做一次加法计算,然后做一次赋值计算把结果存入到n这个空间中,这样左操作数n计算了两次。因此,n+=1的性能更高。事实上,这也是复合赋值操作符存在一个基本原因。很多人刚开始八成会困惑,为什么会存在+=,-=,*=这样的操作符,能提高程序的性能就是其中的一个原因。

◇理解

1.VC编译器优化?能前置,就别后置。

2.养成使用前置操作符的习惯

3.养成使用复合赋值操作符的习惯


◇之后的总结:

[C++]前置自增(自减)和后置自增(自减)  

http://pppboy.blog.163.com/blog/static/302037962011112311822421/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值