1、i++:先在i所在的表达式中使用i的当前值,后让i加1
++i:让i先加1,然后在i所在的表达式中使用i的新值
2、++i和i++的效率问题:
在考虑内建数据类型时,它们的效率差别不大(去除编译器优化的影响)。所以在这种情况下我们大可不必关心。在汇编上查看代码可以得知二者的区别就是在于i++运用了累加器这个寄存器(eax)来进行加法运算,而++i则是运用了计数器这个寄存器(ecx)来进行加法运算。
在考虑自定义数据类型(主要是指类)的情况,因为前缀式(++i)可以返回对象的引用,而后缀式(i++)必须返回对象的值,所以导致在大对象的时候产生了较大的复制开销,引起效率降低,因此处理使用者自定义类型(注意不是指内建类型)的时候,应该尽可能的使用前缀式地增/递减。
3、for循环中++i和i++的效率问题:
倘若for循环函数里面不存在i这个变量,亦只是一条单独语句,没区别,因为没有赋值对象;只有自增;因此++i与i++无太大区别
但倘若for循环函数里面存在i这个变量,那么,导致在大对象的时候产生了较大的复制开销,引起效率降低,因此++i效率更高。
#include <iostream>
using namespace std;
int main() {
long int i=0,c=0;
for (;i <= pow(2,22);i++) {//
c = c + i;//循环函数里存在i变量,那么++i效率更高
}
cout << c << endl;
return 0;
}