Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不引发异常的情况下检查c#中的整数溢出_C#_Integer Overflow - Fatal编程技术网

在不引发异常的情况下检查c#中的整数溢出

在不引发异常的情况下检查c#中的整数溢出,c#,integer-overflow,C#,Integer Overflow,如果我在c#中将两个正数相加,那么检查整数溢出的最佳方法是什么?如果溢出不是应该导致异常的条件 我可以检查结果是否为负值,然后它是溢出吗?如果溢出正常,您可以检查是否为负值,但这不能说明溢出足够大。如果它溢出到足以再次变为正值,那么检查负值显然是行不通的 但是对于两个正整数,检查负整数就可以了。这与关闭“可能重复”投票的答案相同。检查是检查这一点的最佳方法,因为它会引发异常。检查结果是否为阴性不是更好的方法吗?@Alvin视情况而定。如果溢出很严重(通常是这样),这是最好的方法。如果没有,可能是

如果我在c#中将两个正数相加,那么检查整数溢出的最佳方法是什么?如果溢出不是应该导致异常的条件

我可以检查结果是否为负值,然后它是溢出吗?

如果溢出正常,您可以检查是否为负值,但这不能说明溢出足够大。如果它溢出到足以再次变为正值,那么检查负值显然是行不通的


但是对于两个正整数,检查负整数就可以了。

这与关闭“可能重复”投票的答案相同。检查是检查这一点的最佳方法,因为它会引发异常。检查结果是否为阴性不是更好的方法吗?@Alvin视情况而定。如果溢出很严重(通常是这样),这是最好的方法。如果没有,可能是检查阴性。不过,检查负数对多个(偶数个)溢出不起作用。谢谢,但是检查负数什么时候不起作用?@Alvin如果非溢出的情况也会导致负数。是的,你可以。但这只是因为你加的两个数字是非负的。否则,它要么是一个讨厌的表达式(请参阅Hackers Delight),要么是一个来自
checked
的异常(仅当溢出是一个异常和坏事件时才有意义-不适用于标准检查)。顺便说一句,“讨厌的表达式”是
((x+y)^x)和((x+y)^y))<0