i++和++i的区别

本文原创,转载请注明:https://www.cnblogs.com/tkblack/p/11207402.html 

我们经常对变量进行自增或自减的操作,一般来说有两种形式: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++的效率高那么一点点(循环次数较少基本差不多),二者具有不同的使用场景,大家可以根据实际情况进行选择。

posted @ 2019-07-18 15:01  tkblack  阅读(394)  评论(0编辑  收藏  举报