C#默認情況下,若常數表達式的值超過了目標類型的最大值,將會導致編譯錯誤。
若目標數據類型不能容納非常數表達式的數據,那么數據在賦值時會被截斷。
此時可用內存存儲數據來解釋,之前int.MaxValue在內存為為32位1,自加1后變為32位0,此時0被認為是負號,因此會得來-2147483648。
將上述代碼放在checked塊中,將會引發System.OverflowException類型。
C#中放在checked塊內的變量,若運行時發生一次溢出的賦值就會引發一個異常。
unchecked用于取消整型算術運算和轉換的溢出檢查。
新聞熱點
疑難解答