什麼是檢測算術溢出(或下溢)最合適的方法並獲得溢出計數?檢查算術溢出並獲得溢出計數?
爲了便於理解,我將使用byte
,但這與int
或任何其他基本整數類型相同。現在想象我有價值240,並想要添加24。顯然是算術溢出。使用checked
關鍵字這是很容易,至少檢測...
byte value = 240;
try
{
checked
{
value += 24;
}
}
catch (OverflowException e)
{
// handle overflow, get overflow count via % etc.
}
...拋出一個異常。
這是我目前正在使用的。
但是,我不太喜歡這個例外處理。例外通常非常昂貴,我想從一開始就避免它們。對我來說,這似乎是一個Boneheaded-Exception無論如何。 有沒有一些算術魔術我可以做,以檢測這個前期?
糾正我,如果我錯了,但這不檢測下溢,或者它? –
對。你將不得不寫一個類似的下流檢查。 –