首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 遞增/遞減運算子 ++ --:前綴/後綴語意、副作用順序與多重評估陷阱

     編輯:關於C語言

遞增 ++ / 遞減 -- 運算子適用於所有數值型別、char、decimal 及列舉。運算元必須為變數、屬性或索引子(可讀寫),不可為常數或一般運算式。

前綴 vs 後綴

形式語意運算式值
++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 效能略優(無需暫存舊值),習慣用於迴圈計數器。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved