遞增 ++ / 遞減 -- 運算子適用於所有數值型別、char、decimal 及列舉。運算元必須為變數、屬性或索引子(可讀寫),不可為常數或一般運算式。
| 形式 | 語意 | 運算式值 |
|---|---|---|
++x / --x | 先增/減,後使用 | 新值 |
x++ / x-- | 先使用,後增/減 | 舊值 |
int x = 5;
int y = x++; // y=5, x=6
y = ++x; // x=7, y=7
int x = 5;
Console.WriteLine((x++) + (x++) + (x++)); // 18
// 編譯器處理:取原始值 5,5,5 → 相加 15 → 然後各自 ++ 三次 → x=8
// 但 Console.WriteLine 內部順序可能不同,標準規定:運算元左至右評估
// 實際輸出 5+6+7=18(依編譯器實作而定,C# 規定左至右)
int y = (x++) + (x++) + (x++); // 27 (x 從 8 開始:8+9+10)
標準規定:運算元嚴格左至右評估,每個 x++ 取當前值並排程副作用。上例輸出 18 與 27 符合標準。
++/--。x++; y = x; 清楚表達意圖。++x 效能略優(無需暫存舊值),習慣用於迴圈計數器。