程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C# checked、unchecked操作符

C# checked、unchecked操作符

編輯:關於C#
 

checked和unchecked操作符用於整型算術運算時控制當前環境中的溢出檢查。下列運算參與了checked和unchecked檢查(操作數均為整數):

1) 預定義的++和――一元運算符。

2) 預定義的-一元運算符。

3) 預定義的+、-、×、/等二元操作符。

4) 從一種整型到另一種整型的顯示數據轉換。


當上述整型運算產生一個目標類型無法表示的大數時,可以有相應的處理方式:


(一)使用checked

若運算是常量表達式,則產生編譯錯誤:The operation overflows at complie time in checked mode.

若運算是非常量表達式,則運行時會拋出一個溢出異常:OverFlowException異常


(二)使用unchecked

無論運算是否是常量表達式,都沒有編譯錯誤或是運行時異常發生,只是返回值被截掉不符合目標類型的高位。


(三)既未使用checked又未使用unchecked

若運算是常量表達式,默認情況下總是進行溢出檢查,同使用checked一樣,會無法通過編譯。

若運算是非常量表達式,則是否進行溢出檢查,取決於外部因素,包括編譯器狀態、執行環境參數等。


下例說明了checked和unchecked操作符在非常量表達式中的使用方法:

class Test

{

static int x = 1000000;

static int y = 1000000;

static int F()

{

return checked(x*y); //運行時拋出OverFlowException異常

}

static int G()

{

return unchecked(x*y); //截去高位部分,返回-727379968

}

static int H()

{

return x*y; //依賴於編譯器的默認設置,一般是不檢查

}

}


checked和unchecked操作符在常量表達式中的使用方法:

class Test

{

const int x = 1000000;

const int y = 1000000;

static int F()

{

return checked(x*y); //編譯錯誤,編譯無法通過

}

static int G()

{

return unchecked(x*y); //截去高位部分,返回-727379968

}

static int H()

{

return x*y; //編譯錯誤,編譯無法通過

}

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved