C#入門之checked和unchecked的區(qū)別實例解析
本文以實例形式對比測試了C#中checked和unchecked的區(qū)別,對于C#初學(xué)者來說有很好的借鑒參考價值。具體分析如下:
int類型的最大值是2147483647,2個最大值相加就會超出int的最大值,即出現(xiàn)溢出。
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = x + y; Console.WriteLine(z.ToString()); Console.ReadKey(); } }
把斷點打在 int z = x + y;代碼行,單步調(diào)試,可以看到z的值為-2。因為int類型的最大值是2147483647,x + y超出了最大值,出現(xiàn)了溢出。
程序運行效果如下圖所示:
一、使用checked:
如果我們想讓編譯器幫我們判斷是否溢出,就使用checked關(guān)鍵字。
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = checked(x + y); } }
運行后拋出溢出異常,運行結(jié)果如下圖所示:
如果我們想手動捕獲并打印異常,應(yīng)該這樣寫:
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; try { int z = checked(x + y); } catch (OverflowException ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); } }
運行結(jié)果如下圖所示:
二、使用unchecked:
使用unchecked不會拋出溢出異常。
class Program { static void Main(string[] args) { int y = 2147483647; int x = 2147483647; int z = unchecked(x + y); Console.WriteLine(z.ToString()); Console.ReadKey(); } }
結(jié)果為:-2
相關(guān)文章
C# WinForm狀態(tài)欄實時顯示當(dāng)前時間(窗體狀態(tài)欄StatusStrip示例)
這篇文章主要介紹了C# WinForm狀態(tài)欄實時顯示當(dāng)前時間(窗體狀態(tài)欄StatusStrip示例),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01.NET使用C#設(shè)置Excel單元格數(shù)值格式
這篇文章主要為大家詳細(xì)介紹了如何使用C#在.NET程序中實現(xiàn)對Excel單元格數(shù)字格式的設(shè)置,幫助實現(xiàn)更完善的Excel文件處理,感興趣的小伙伴可以了解下2024-12-12c# 利用易福門振動模塊VSE002采集振動數(shù)據(jù)的方法
這篇文章主要介紹了c# 利用易福門振動模塊VSE002采集振動數(shù)據(jù)的方法,本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04