前自加和後自加區別在於運算順序和結合方向。
C/C++中有兩種自加運算,其運算子均為++,功能為將運算子自加1.
其中:
++VAR被稱為前自加,其後面的變數執行自加操作,其運算為,先執行自加操作,再引用VAR值。
VAR++被稱為後自加,其前面的變數執行自加操作,其運算為,先引用VAR值,再進行自加操作。
如果自加語句獨立成為一個單獨的語句,那麼前後自加是完全相同的。
比如單獨的一行
a++;
和
++a;
是一樣的。
再比如,常見的for迴圈:
for(i = 0; i
這裡用到的++i和i++是完全相同的,沒有區別。
當運算變數本身值會在自加語句中,同時執行其它操作,二者就有區別了。
比如
int i =0;
while(i++
i會先和10比較大小,然後執行自加。這樣當i=10時,退出迴圈,再執行一次自加,退出後i值為11。
而如果寫成
while(++i
是先執行自加,然後再與10比較。這樣在i=9時,先自加,得到i=10,然後比較就會退出迴圈了。這種情況下,退出後i值為10。
再舉一個例子。
int a, i = 10;
a = i ++; //這裡i要先賦值,再自加。語句執行後a=10, i = 11;
而如果寫成:
a = ++i; //這裡i要先自加,再賦值。語句執行後a=11, i = 11;
前自加和後自加區別在於運算順序和結合方向。
C/C++中有兩種自加運算,其運算子均為++,功能為將運算子自加1.
其中:
++VAR被稱為前自加,其後面的變數執行自加操作,其運算為,先執行自加操作,再引用VAR值。
VAR++被稱為後自加,其前面的變數執行自加操作,其運算為,先引用VAR值,再進行自加操作。
如果自加語句獨立成為一個單獨的語句,那麼前後自加是完全相同的。
比如單獨的一行
a++;
和
++a;
是一樣的。
再比如,常見的for迴圈:
for(i = 0; i
for(i = 0; i
這裡用到的++i和i++是完全相同的,沒有區別。
當運算變數本身值會在自加語句中,同時執行其它操作,二者就有區別了。
比如
int i =0;
while(i++
i會先和10比較大小,然後執行自加。這樣當i=10時,退出迴圈,再執行一次自加,退出後i值為11。
而如果寫成
while(++i
是先執行自加,然後再與10比較。這樣在i=9時,先自加,得到i=10,然後比較就會退出迴圈了。這種情況下,退出後i值為10。
再舉一個例子。
int a, i = 10;
a = i ++; //這裡i要先賦值,再自加。語句執行後a=10, i = 11;
而如果寫成:
int a, i = 10;
a = ++i; //這裡i要先自加,再賦值。語句執行後a=11, i = 11;