Jam*_*mes 47 .net c# integer-overflow
在C#中,我看到了
-1 * int.MinValue == int.MinValue
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?当我试图实现搜索树时,它真的搞砸了我.我最终使用,(int.MinValue + 1)所以我可以正确否定它.
jjn*_*guy 58
这不是一个错误.
int.MinValue * -1是1大于int.MaxValue可以容纳.因此,数字回绕到int.MinValue.
这基本上是由整数溢出引起的.
这个常数的值是
-2,147,483,648
这个常数的值是
2,147,483,647
所以,-2,147,483,648 * -1 = 2,147,483,648哪个1大于Int32.MaxValue.
int i = -1 * int.MinValue;
Run Code Online (Sandbox Code Playgroud)
除非您禁用检查,否则甚至无法编译:
error CS0220: The operation overflows at compile time in checked mode
Run Code Online (Sandbox Code Playgroud)