C++中遇到a++和++a的情況時,經常會搞混,而且現在很多的面試或者筆試題目中奪回涉及到這個兩者的差別。那這兩個之間的差別是什麼呢?
首先,a++和++a執行的功能是a的自增,也就是完成a = a+1;單獨使用時,這兩者的執行結果沒有太大的差異,例如:
P1: int a = 5; P2: int a = 5;
a++; ++a;
cout<<a<<endl; cout<<a<<endl;
程式P1 、P2 的執行結果都為6;
其次,當這兩者放在表達式或者在流中輸入輸出的時候,兩者的執行順序就不相同了,下面我們通過例子來講解
P3: int a = 5;
int b = a++; //将a的值5指派給b,之後a自增為6
cout<<a++<<endl; //輸出a(即6),然後a的值自增
P4:int a = 5;
int b =++ a; //a自增為6,之後将a的值6指派給b
cout<<++a<<endl; //a的值自增為7,然後輸出a
下面介紹較為複雜的例子:
P5 :
int a = 5;
int b = (a++)*(a++);//輸出結果為25;首先進行乘積運算,然後執行++操作,并且++ 操作執行了兩次
//該條語句執行完之後,a的值更新為7
P6:
int a = 5;
int b = (++a)*(++a);//輸出結果為49;首先執行兩次++操作,然後進行乘積運算
//該條語句執行完之後,a的值更新為7
總結:
在判斷含有++ 的表達式的值時,明确該表達式中含++ 的成分的執行順序,既可以輕松的擷取正确的結果