close
對於一些跟錢有關的系統,在數字的計算上要特別小心。在程式設計上,一個變數能存的數目是有範圍的,不可能是無限大,所以會有所謂溢位的問題。
例如下列程式碼:
int intA = int.MaxValue; int intB = intA + 1; Console.WriteLine(intB);
執行結果。
很明顯的,如果不特別檢查,一旦超過儲存範圍,就會有非預期的值。好在對於整數的檢查,C# 提供 checked 關鍵字。
下列程式碼會檢查整數是否溢位,一旦有溢位的情形,就會丟出 exception。
try { int intA = int.MaxValue; int intB = checked(intA + 1); Console.WriteLine(intB); } catch (Exception ex) { Console.WriteLine(ex.Message); }
執行結果。
另外,也可以宣告 checked 區塊,如果區塊內有任何整數發生溢位的情況,也會丟出 exception。
try { checked { byte byteA = byte.MaxValue; byte byteB = 2; byte byteC = (byte)(byteA + byteB); Console.WriteLine(byteC); } } catch (Exception ex) { Console.WriteLine(ex.Message); }
另外,checked() 內如果放入 byte 型別的變數,編譯是不會過的,所以建議使用 checked 區塊,在程的撰寫上也比較方便。
全站熱搜