天天看點

C++中前置++和後置++的差別

     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

總結:

  在判斷含有++ 的表達式的值時,明确該表達式中含++ 的成分的執行順序,既可以輕松的擷取正确的結果