在不引发异常的情况下检查c#中的整数溢出
如果我在c#中将两个正数相加,那么检查整数溢出的最佳方法是什么?如果溢出不是应该导致异常的条件 我可以检查结果是否为负值,然后它是溢出吗?如果溢出正常,您可以检查是否为负值,但这不能说明溢出足够大。如果它溢出到足以再次变为正值,那么检查负值显然是行不通的在不引发异常的情况下检查c#中的整数溢出,c#,integer-overflow,C#,Integer Overflow,如果我在c#中将两个正数相加,那么检查整数溢出的最佳方法是什么?如果溢出不是应该导致异常的条件 我可以检查结果是否为负值,然后它是溢出吗?如果溢出正常,您可以检查是否为负值,但这不能说明溢出足够大。如果它溢出到足以再次变为正值,那么检查负值显然是行不通的 但是对于两个正整数,检查负整数就可以了。这与关闭“可能重复”投票的答案相同。检查是检查这一点的最佳方法,因为它会引发异常。检查结果是否为阴性不是更好的方法吗?@Alvin视情况而定。如果溢出很严重(通常是这样),这是最好的方法。如果没有,可能是
但是对于两个正整数,检查负整数就可以了。这与关闭“可能重复”投票的答案相同。检查是检查这一点的最佳方法,因为它会引发异常。检查结果是否为阴性不是更好的方法吗?@Alvin视情况而定。如果溢出很严重(通常是这样),这是最好的方法。如果没有,可能是检查阴性。不过,检查负数对多个(偶数个)溢出不起作用。谢谢,但是检查负数什么时候不起作用?@Alvin如果非溢出的情况也会导致负数。是的,你可以。但这只是因为你加的两个数字是非负的。否则,它要么是一个讨厌的表达式(请参阅Hackers Delight),要么是一个来自
checked
的异常(仅当溢出是一个异常和坏事件时才有意义-不适用于标准检查)。顺便说一句,“讨厌的表达式”是((x+y)^x)和((x+y)^y))<0
。