什么是检测算术溢出(或下溢)最合适的方法并获得溢出计数?检查算术溢出并获得溢出计数?
为了便于理解,我将使用byte
,但这与int
或任何其他基本整数类型相同。现在想象我有价值240,并想要添加24。显然是算术溢出。使用checked
关键字这是很容易,至少检测...
byte value = 240;
try
{
checked
{
value += 24;
}
}
catch (OverflowException e)
{
// handle overflow, get overflow count via % etc.
}
...抛出一个异常。
这是我目前正在使用的。
但是,我不太喜欢这个例外处理。例外通常非常昂贵,我想从一开始就避免它们。对我来说,这似乎是一个Boneheaded-Exception无论如何。 有没有一些算术魔术我可以做,以检测这个前期?
纠正我,如果我错了,但这不检测下溢,或者它? –
对。你将不得不写一个类似的下流检查。 –