首頁  >  文章  >  後端開發  >  C#難點逐一擊破(7):checked與unchecked

C#難點逐一擊破(7):checked與unchecked

黄舟
黄舟原創
2016-12-22 14:20:341090瀏覽

C#預設情況下,若常數表達式的值超過了目標類型的最大值,將會導致編譯錯誤。

C#難點逐一擊破(7):checked與unchecked


若目標資料型別不能容納非常數表達式的數據,那麼資料在賦值時會被截斷。

class Program 
{ 
static void Main(string[] args) 
{ 
int n = int.MaxValue;//n=2147483647 
n = n + 1; 
System.Console.WriteLine(n); 
} 
}

C#難點逐一擊破(7):checked與unchecked

此時可用內存存儲資料來解釋,之前int.MaxValue在內存為為32位1,自加1後變為32位0,此時0被認為是負號,因此會得來-2147483648。

將上述程式碼放在checked區塊中,將會引發System.OverflowException類型。

class Program 
{ 
static void Main(string[] args) 
{ 
checked 
{ 
int m = int.MaxValue; 
m = m + 1; 
System.Console.WriteLine(m); 
} 
} 
}

C#難點逐一擊破(7):checked與unchecked

C#中放在checked區塊內的變量,若運行時發生一次溢出的賦值就會引發一個異常。

unchecked用於取消整型算術運算和轉換的溢位檢查。

 以上就是C#難點逐一擊破(7):checked與unchecked的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn