【发布时间】:2021-02-05 16:59:48
【问题描述】:
如果我将 Int32.MinValue 和 -1 传递给 Divide() 方法,我会得到一个 System.OverflowException,尽管该块发生在 unchecked 块中。
private static int Divide(int n, int d)
{
return unchecked (n / d);
}
这让我感到惊讶 - 除非我已经阅读了 documentation 的检查/未检查错误,否则我希望它只会给我一个溢出的输出(因为 Int32.MinValue / -1 = 2^31 = Int32 .MaxValue + 1,我期待溢出到 Int32.MinValue 的值)。相反,它抛出了一个OverflowException。
这是一个 DotNetFiddle 显示问题。
【问题讨论】: