程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#難點逐個擊破(7):checked與unchecked

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

編輯:C#基礎知識

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

若目標數據類型不能容納非常數表達式的數據,那麼數據在賦值時會被截斷。
代碼如下:

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

此時可用內存存儲數據來解釋,之前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#中放在checked塊內的變量,若運行時發生一次溢出的賦值就會引發一個異常。

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

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