【发布时间】:2014-12-23 01:11:37
【问题描述】:
int y = -2147483648;
int z = unchecked(y / -1);
第二行导致OverflowException。 unchecked 不应该阻止这种情况吗?
例如:
int y = -2147483648;
int z = unchecked(y * 2);
不会导致异常。
【问题讨论】:
-
@DJBurb 问题不是问如何解决它,而是解释行为。代码不应抛出异常。
-
执行除法时唯一可以想到的溢出 int 的方法是使用此处列出的两个操作数,即将 int.MinValue 除以 -1。其他每一对操作数都不会溢出,所以他们可能只是没有想到这种情况并错误地假设整数除法永远不会溢出。
-
@HansPassant 我理解您删除了您的答案,尽管这很不幸。 (这里的系统可能有问题...)
-
@HansPassant - 他们不是真正的开发者!
-
@HansPassant:你的赞成票比反对票多,我认为你应该把你的答案带回来。特别是因为这是Servy答案的后半部分/另一半。
标签: c# checked unchecked overflowexception