当我不想要它们时(或者我认为),我正在向我抛出OverflowException 。我正在执行一些奇怪的计算,我希望这些值会溢出,丢弃溢出的位。看来我无法让它正常工作。基本上这是一对 i 和 j,当我迭代巨大的集合(int.MinValue 到 int.MaxValue)时会发生这种情况。
// i and j are ints
// i is -2147483648
// j is -1
var x = i / j;
// I also tried using unchecked keyword, but it doesn't help
var x = unchecked(i / j);
更新:
-2147483648 / -1 的预期数学值是 2147483648。但是,这个特定的代码并没有真正尝试找到数字。这是一系列难以理解的位操作的一部分。老实说,我什至不知道自己的意图是什么,因为我并没有真正记录该方法,并且只需要一天时间就可以在我的头上引发严重的 WTF 泡沫。据我所知,它使用旨在处理此案的特殊代码按预期工作。
关于期望值:
由于 int 只能保持 2147483647 的最大值,我希望丢弃产生值 0 的溢出。
如果我对此有所了解,那可能是文档对于晦涩的方法的重要性。