回覆列表
-
1 # 豔麗你好
-
2 # 陶白
1、a = i++;
相當於 a = i; i++;
2、a = ++i;
相當於 i++; a = i;
3、int i=4;
int j=4;
int a = i++;
int b = ++j;
printf("%d, %d\n", a, b);
結果是4,5。
1、a = i++;
相當於 a = i; i++;
2、a = ++i;
相當於 i++; a = i;
3、int i=4;
int j=4;
int a = i++;
int b = ++j;
printf("%d, %d\n", a, b);
結果是4,5。
主要差異在於返回值,相同點在於對i進行自加:
++i返回的是i自加後的內容,i++返回的是i未自加的內容。
舉個例子:
int i = 10;
a = i++;
vs
int i = 10;
b = ++i;
結果分別是 i = 11, a = 10和 i = 11, b = 11。
將i++和++i彙編結果,若沒有使用其返回值賦值特性,結果是一樣的,有返回值差異在於彙編程式碼執行先後(先自加還是先賦值)區別。
另外,關於for(i = 0; i < n; i++)與for(i = 0; i < n; ++i) 有差異的說法是扯淡的。現在我們看到的編譯器,基本都會彙編成相同的程式碼(好像有基本經典教程說有差異,那只是針對古老的編譯器)。