| 運算子 | 名稱 | 運作方式 | 運算式值 |
|---|---|---|---|
a++ | 後置遞增 | 先參與運算,再遞增 | 遞增前的值 |
++a | 前置遞增 | 先遞增,再參與運算 | 遞增後的值 |
a-- | 後置遞減 | 先參與運算,再遞減 | 遞減前的值 |
--a | 前置遞減 | 先遞減,再參與運算 | 遞減後的值 |
int a = 10, b, c, d; b = a++; // ① b=10, a=11 c = ++a; // ② a=12, c=12 d = 10 * a++; // ③ d=120, a=13
結果:b=10, c=12, d=120
b = a++:賦值運算子 = 優先級高於後置 ++?錯誤觀念。實際上後置 ++ 優先級最高,但其「副作用」(遞增)在序列點(此處為語句結尾 ;)前完成。運算式值為 10,賦予 b,隨後 a 變 11。c = ++a:前置 ++ 先將 a 變 12,運算式值為 12,賦予 c。d = 10 * a++:* 優先級高於後置 ++。先計算 10 * a(a 為 12)得 120,賦予 d;語句結束前 a 遞增為 13。int a = 10, d; d = 10 * (a++); // 等同 10 * a++,d=100, a=11 d = 10 * (++a); // 先 ++a 變 11,再 10*11=110,d=110, a=11
後置 ++ -- ( ) [ ] . -> 前置 ++ -- sizeof & * + - ~ ! (型別轉換) * / % + - << >> < <= > >= == != & ^ | && || ?: = += -= *= /= %= <<= >>= &= ^= |= , (逗號運算子)
a = a++ + ++a),行為未定義