我们经常对变量进行自增或自减的操作,一般来说有两种形式:i++或者++i。这两者之间有什么差异呢?
首先,我们知道i++是先对i进行相关操作再+1;而++i则是先进行+1再进行相关的操作:
举个简单的例子:
1 int tmp = 0;2 cout << tmp++ << endl; //先输出,再+1 3 cout << ++tmp << endl; //先+1,在输出
这里的输出结果为:
0
2
接下来,我们看看二者的实现:
1 int& operator++(){ //++i 2 *this += 1; 3 return *this; 4 } 5 6 int operator++( int ){ //i++ 7 int bak = *this; 8 *this += 1; 9 return bak;10 }
从以上代码可以看出,++i实际对地址进行操作(这里采用引用变量),不存在内存拷贝的情况;而i++则是对拷贝变量进行操作,存在内存拷贝的操作。因此,++i会比i++的效率高那么一点点,当然二者具有不同的使用场景,大家可以根据实际情况进行选择。