C#難點(diǎn)逐個(gè)擊破(7):checked與unchecked
C#默認(rèn)情況下,若常數(shù)表達(dá)式的值超過了目標(biāo)類型的最大值,將會(huì)導(dǎo)致編譯錯(cuò)誤。

若目標(biāo)數(shù)據(jù)類型不能容納非常數(shù)表達(dá)式的數(shù)據(jù),那么數(shù)據(jù)在賦值時(shí)會(huì)被截?cái)唷?BR>
class Program
{
static void Main(string[] args)
{
int n = int.MaxValue;//n=2147483647
n = n + 1;
System.Console.WriteLine(n);
}
}

此時(shí)可用內(nèi)存存儲(chǔ)數(shù)據(jù)來解釋,之前int.MaxValue在內(nèi)存為為32位1,自加1后變?yōu)?2位0,此時(shí)0被認(rèn)為是負(fù)號(hào),因此會(huì)得來-2147483648。
將上述代碼放在checked塊中,將會(huì)引發(fā)System.OverflowException類型。
class Program
{
static void Main(string[] args)
{
checked
{
int m = int.MaxValue;
m = m + 1;
System.Console.WriteLine(m);
}
}
}

C#中放在checked塊內(nèi)的變量,若運(yùn)行時(shí)發(fā)生一次溢出的賦值就會(huì)引發(fā)一個(gè)異常。
unchecked用于取消整型算術(shù)運(yùn)算和轉(zhuǎn)換的溢出檢查。
相關(guān)文章
winform實(shí)現(xiàn)可拖動(dòng)的自定義Label控件
這篇文章主要為大家詳細(xì)介紹了winform實(shí)現(xiàn)可拖動(dòng)的自定義Label控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
C#使用Socket實(shí)現(xiàn)通信的方法示例
這篇文章主要介紹了C#使用Socket實(shí)現(xiàn)通信的方法示例,文章按照 Socket 的 創(chuàng)建、連接、傳輸數(shù)據(jù)、釋放資源的過程來寫,給出方法、參數(shù)的詳細(xì)信息,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-06-06
關(guān)于C#生成MongoDB中ObjectId的實(shí)現(xiàn)方法
本篇文章小編為大家介紹,關(guān)于C#生成MongoDB中ObjectId的實(shí)現(xiàn)方法。需要的朋友參考下2013-04-04
基于C#實(shí)現(xiàn)的屏幕指定區(qū)域截屏代碼
這篇文章主要介紹了C#實(shí)現(xiàn)的屏幕指定區(qū)域截屏代碼,有需要的朋友可以參考一下2014-01-01
C#連接ClickHouse數(shù)據(jù)庫的步驟指南
在 C# 中連接 ClickHouse 數(shù)據(jù)庫,您可以使用 ClickHouse.Client 庫,這個(gè)庫提供了對(duì) ClickHouse 數(shù)據(jù)庫的高效訪問,以下是詳細(xì)的步驟指南,幫助您在 C# 項(xiàng)目中連接和操作 ClickHouse 數(shù)據(jù)庫,需要的朋友可以參考下2024-12-12
C#難點(diǎn)逐個(gè)擊破(4):main函數(shù)
貌似我是在寫C#的學(xué)習(xí)筆記哦,不過反正可以利用這個(gè)機(jī)會(huì)來好好溫習(xí)下基礎(chǔ)知識(shí),這其中很多知識(shí)點(diǎn)都屬于平時(shí)視而見的小知識(shí)2010-02-02
unity實(shí)現(xiàn)貼圖矩陣運(yùn)算(旋轉(zhuǎn)平移縮放)
這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)貼圖矩陣運(yùn)算,旋轉(zhuǎn)平移縮放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07

