check和unchecked整數算術

2021-06-15 22:16:34 字數 766 閱讀 1187

當int型別  2147483647加上乙個int型的1時c#編譯器會生成**,允許計算機悄悄地溢位,結果會是- 2147483648(最大值加上1會溢位最大負數值勤- 2147483648),如果為每個整數表示式溢位檢查會贊成效能下降,這時可啟用或禁用檢查功能,(專案-"yourproject屬性"選項-生成卡片(右下角的"高階"按鈕,在高階生成設定對話方塊中,勾選檢查運算上溢/下溢選項

不管應用程式如何,都可用checked和uncheckd關鍵字,選擇性開啟和關閉程式特定部分溢位檢查,這些關鍵字將會覆蓋編譯器選項

checked語句

checked塊中的任何溢位都有會招聘乙個overflowexception異常

int number = int32.maxvalue;

checked

也可單獨整數表示式int wontthrow = unchecked(int32.maxvalue+1)

private

int multiplyvalues(int lefthandside, int righthandside)

這個**塊會悄悄溢位了int 型別32位限制,會輸出乙個負值

private

intmultiplyvalues(

intlefthandside,

intrighthandside)

這個**塊會丟擲乙個overflowexce

catch

(overflowexception ex)

在result文字框上顯示"算術運算導致溢位"

unchecked和check控制基元型別操作

c 每個運算子都有2套il指令,如 對應add和add.ovf,前者不執行溢位檢查,後者要檢查並丟擲system.overflowexception異常。溢位檢查預設是關閉的,即自動對應add這樣的指令而不是add.ovf。控制c 溢位的方法 1.使用 check 編譯器開關 2.使用操作符chec...

checked和unchecked的區別

int型別的最大值是2147483647,2個最大值相加就會超出int的最大值,即出現溢位。class program 把斷點打在 int z x y 行,單步除錯,可以看到z的值為 2。因為int型別的最大值是2147483647,x y超出了最大值,出現了溢位。使用checked 如果我們想讓編...

WinCE中的Flash分割槽和CheckSum點滴

checksum 是一種用於檢查資料檔案有沒有發生變化的方法,對於一些重要的資料檔案為了檢查傳輸過程過程中有沒有資料的損壞或丟失,常常會用到 checksum 演算法。wince 中經常用到 checksum 的地方就是對即將燒寫進 flash 中的image 檔案進行校驗,和燒寫完對寫入的資料進行...