在7.8.3中。关于剩余运算符的C#规范,它声明如下:
如果左操作数是最小的int或long值,则右边 操作数为-1,抛出System.OverflowException。
因此int.MinValue % -1
会导致OverflowException。我想知道为什么?
答案 0 :(得分:6)
在二进制补码算法中,数据类型的范围从(-2 ** n)到(2 ** n - 1)(其中'n'比数据类型中的位数少1)。 / p>
例如,16位有符号整数的有效范围为-32768(-2 ** 15)到32767(2 ** 15 - 1)。
-32768 / -1 = +32768,超出了16位有符号整数的有效范围。