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

(i1=i; i=i+1; 返回i1的值)

++i:是将i自增1,然后返回i的值。

(i=i+1;返回i的值)

两者效率问题:

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

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

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

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

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

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

此外,

i+=1: 事实上相当于++i

i=i+1: 虽然有点雷同于i+=1,但不同的是此时右值的i和1做相加操作,形成一个副本然后赋值给i,所以有额外操作

鉴于i++和++i的差别,C++Primer建议用++i作为for循环的递增量

成都达内IT培训,中国IT教育领导品牌,0首付,先就业,后付款, 是你进入世界500强企业的基石!
成都达内网站:http://www.sctarena.com
电话:400-850-6686
QQ:396637598