C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
来源:互联网 发布:知乎和百度问问的区别 编辑:程序博客网 时间:2024/04/25 17:15
a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值a+=1: 事实上相当于++aa=a+1: 虽然有点雷同于a+=1,但不同的是此时右值的a和1做相加操作,形成一个副本然后赋值给a,所以有额外操作++a:将a自增1并返回a鉴于a++和++a的差别,C++Primer建议用++a作为for循环的递增量
1.在内建数据类型时(即自增表示式的结果没有被使用,只是简单的用于递增操作),这时这两个表达式的效率是相同的。
2.在自定义数据类型时(主要指有类的情况),由于++a可以返回对象的引用,而a++一定要是返回对象的值(因为局部对象不能返回引用)。可想而知引用的开销当然比直接对对象进行操作要效率高很多,节省很多开销。
前置++和后置++存在本质上的区别:
前置++ 不会产生临时对象
后置++ 在返回时有一个临时对象的创建
在前置++和后置++ 效果相同的时候,最好使用前置++
0 0
- C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
- C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
- C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
- java中 a=a+1;和a+=1;有什么区别
- python中a+=b与a=a+b有什么区别
- if(a);if(!a);if(a!=0);if(a==0)有什么区别?
- *p=a与*p=&a有什么区别
- a和&a有什么区别
- a和&a有什么区别
- ++a和a++到底有什么区别?
- c语言的 a++ 和 ++a有什么区别
- 请问编译原理中a(a|b)*a和aa*b*a有什么区别,谢谢。
- php中$a++和++$a有什么区别
- HTML问题,a href =" "和 a href ="#"这两个有什么区别?
- $a = 1; $c = ++$a+(++$a)+($a--)-($a++); echo $c;是怎么运算的
- js中var a=new Object()和var a={}有什么区别吗?
- js中var a=new Object()和var a={}有什么区别
- js中var a=new Object()和var a={}有什么区别吗?
- Android NDK读取文件
- 百度之星 初赛roundB 1006 中位数计数 详解
- MongoDb的安装与使用
- JamesMusic浅读--------7,音乐列表界面显示
- 二叉树的子树
- C++中,a++、a+=1、a=a+1、++a 有什么区别?以及效率问题
- memcpy与memmove
- spring 整合hibernate加载hbm的问题
- Collection & Collections Part 2/2: Collections
- HTML中      等6种空白空格的区别
- 简要介绍 LFW dataset
- 在OsX系统上使用Jenkins自动构建发布Unity3d的iOS版本到fir.im
- 【PHP】php设置页面字符集与保存utf-8无BOM不能同时使用
- python egg