国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中的checked、unchecked操作符

2023-05-02 19:48:19
字體:
來源:轉載
供稿:網友

在C#中checked和unchecked操作符用于控制檢查整型算術運算時是否溢出。

下列運算參與了checked和unchecked檢查(操作數均為整數):

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

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

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

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

checked與unchecked

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

1、使用checked

若運算是常量表達式,則產生編譯錯誤:The Operation overflows at complie time in checked mode.
若運算是非常量表達式,則運行時會拋出一個溢出異常:OverFlowException異常

2、使用unchecked

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

3、既未使用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; //編譯錯誤,編譯無法通過
   }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长汀县| 延长县| 昌江| 阿图什市| 仁寿县| 荔浦县| 顺昌县| 泰兴市| 高邮市| 呼玛县| 新源县| 尉氏县| 牙克石市| 浦北县| 石河子市| 余姚市| 丰都县| 商洛市| 体育| 玉树县| 佛冈县| 清远市| 饶河县| 无极县| 皮山县| 汤阴县| 磴口县| 榆林市| 咸丰县| 本溪市| 东方市| 察隅县| 民权县| 景泰县| 榕江县| 南投市| 镇江市| 保定市| 泽普县| 忻城县| 河曲县|