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