Related Posts Plugin for WordPress, Blogger... 簡單易懂的低調手札: [memo] C++ 遞增後置與編譯

2011年8月27日 星期六

[memo] C++ 遞增後置與編譯

#include<iostream>
#include<string>


int main(){
    using namespace std;
    int x=1;
    
    cout << "At first x = " << x << endl;
    cout << "x++ = "<< x++ ;
    cout << ",x++ = " << x++ << endl;
    cout << "So, x = " <<x  << "." << endl;




    cout << "And then, x = " << x << endl ;
    cout << "x++ = " << x++ << ", x++ = " << x++;



system("pause");
return 0;
}


 



看出差異了嗎?


在前段中, x++ 作為後置版本會先印出處理前的"值"之後再進行遞增,


所以 x++ = 1 會先被印出來才遞增一次!


 


至於編譯器的習慣使得 x++ =4 會印在前面這點請看以下解釋:


x++並不是一個完整的運算式,所謂"完整運算式"是整個指定敘述,


分號 " ; " 會標記出循序點,


所以 C++ 唯一保證的就是程式執行到下面敘述以前, x 會被遞增兩次!


 


C++並不會只是 x 需要在每一個子運算式計算後做遞增,


或者是當所有計算式計算後才做遞增,


因此我們要盡量避免用這樣的敘述。


沒有留言:

張貼留言