大家知道,計算機進行數學計算時,往往會出現計算結果超出這個結果所屬類型的值域的情況,這種現象我們稱為溢出。
C#中,對於溢出的處理有兩種選擇:
(1).你可以通過調整編譯器的選項來檢測整個程序。
(2).你可以聲明可能發生溢出的模塊,進行局部檢測。
如果你選擇第一種方案,即打算在整個程序中控制溢出檢測,可以選中C#編譯器設置面板中的Checked選項(checked+)。
如果不希望溢出檢測作用於整個程序,我們可以使用局部檢測的方案。利用檢測語句可以很容易做到。checked和unchecked語句就是用來控制整型算術運算和轉換中的溢出檢測的,這我們在上一章中已經介紹過。
下面以一個計算階乘的例子說明它們的用法。
程序清單8-8:
using System; class Factorial { public static void Main(string[] args) { long nFactorial=1; long nComputerto=Int64.Parse(args[0]); long nCurDig=1; for(nCurDig=1;nCurDig<=nComputerto;nCurDig++) checked{nFactorial*=nCurDig;} Console.WriteLine("{0}!is{1}",nComputerto,nFactorial); } }本文發表於www.bianceng.cn(編程入門網)
當階乘運算發生溢出時,程序將發出異常信息:
System.OverflowException at Factorial.main(System.String[])