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

C# checked/unchecked 運算子與語句:整數溢位檢查控制完整指南

     編輯:關於C語言

checked/unchecked 控制整數算術運算與整數顯式轉換的溢位檢查內容。影響範圍:

  • ++ --(一元)、-(一元負號)
  • + - * /(二元,雙運算元皆為整數)
  • 整數 → 整數顯式轉換

行為差異

內容常數運算式溢位非常數運算式溢位
checked編譯錯誤拋 OverflowException
unchecked截斷高位,無錯誤截斷高位,無例外
無標記(預設)編譯錯誤視編譯器選項/執行環境而定

運算子 vs 語句


// 運算子:僅影響括號內單一運算式
int z = checked(x * y);

// 語句:影響區塊內所有受影響運算
checked {
    int a = x * y;
    int b = (int)longVal;
}

不影響區域

  • 方法呼叫內部:checked(F(1000000, 1000000)) 不影響 F 內部的 x*y。
  • 非整數運算(float/double/decimal)。
  • 使用者定義運算子(除非內部呼叫受影響運算)。

程式碼驗證


const int X = 1000000, Y = 1000000;
checked { var a = X * Y; } // 編譯錯誤 CS0220
unchecked { var b = X * Y; } // b = -727379968
var c = X * Y; // 編譯錯誤(常數預設 checked)

最佳實務

  • 金融/科學計算:區塊層級 checked。
  • 效能敏感、確定不溢位:unchecked 區塊。
  • 避免在迴圈熱路徑使用 checked 運算子(改用語句或專案層級 /checked+)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved