a++和++a有什么区别

如题所述

a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值。

例子:

a=3;

b=a++;

运行后

b=3,a=4

++a:将a自增1并返回a。

a=3;

b=++a;

运行后

b=4,a=4

效率问题:

1.在内建数据类型时(即自增表示式的结果没有被使用,只是简单的用于递增操作),这时这两个表达式的效率是相同的。

2.在自定义数据类型时(主要指有类的情况),由于++a可以返回对象的引用,而a++一定要是返回对象的值(因为局部对象不能返回引用)。可想而知引用的开销当然比直接对对象进行操作要效率高很多,节省很多开销。

扩展资料

前置++和后置++存在本质上的区别:

前置++ 不会产生临时对象

后置++ 在返回时有一个临时对象的创建

在前置++和后置++ 效果相同的时候,最好使用前置++

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-15

a++是先办事(进行相关运行),后给钱(然后再将a加1)

++a是先给钱(先给a加1),后办事(然后参与运算)


关于更详细的分析,大家可以参考我所写的百度经验。里面基于反汇编的代码,分析了两者的差别,相信你看过后会明白的。

jingyan.baidu.com/article/9f63fb919997f3c8400f0efb.html

第2个回答  2011-07-10
1 a++是先引用,后加;++a是先加,后引用。
2 a++当常量看待,++a当变量看待。
第3个回答  推荐于2017-09-18
第一种情况:
a=3;
b=a++;
运行后
b=3,a=4

第二种情况:
a=3;
b=++a;
运行后
b=4,a=4本回答被提问者采纳
第4个回答  2011-07-10
a++是先运算再执行加1,++a是先加1再运算