您的位置:首页 > 编程语言 > C语言/C++

C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题

2016-09-19 16:47 477 查看
a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值
a+=1: 事实上相当于++a
a=a+1: 虽然有点雷同于a+=1,但不同的是此时右值的a和1做相加操作,形成一个副本然后赋值给a,所以有额外操作
++a:将a自增1并返回a
鉴于a++和++a的差别,C++Primer建议用++a作为for循环的递增量效率问题:
1.在内建数据类型时
(即自增表示式的结果没有被使用,只是简单的用于递增操作)
,这时这两个表达式的效率是相同的。
2.在自定义数据类型时
(主要指有类的情况)
,由于++a可以返回对象的引用,而a++一定要是返回对象的值。可想而知引用的开销当然比直接对对象进行操作要效率高很多,节省很多开销。
前置++和后置++存在本质上的区别:
前置++ 不会产生临时对象
后置++ 在返回时有一个临时对象的创建
在前置++和后置++ 效果相同的时候,最好使用前置++
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言