这是我的代码。
string strTemp = "";
for (int i = input1; i <= input2; i++)
{
strTemp = Math.Abs(i).ToString();
//other stuff here
}
当 input1 的值为 -2147483648 时,我得到错误
对二进制补码的最小值取反是无效的。
我有点明白这是由于溢出异常。但是我该如何克服呢?请有任何建议。
这是我的代码。
string strTemp = "";
for (int i = input1; i <= input2; i++)
{
strTemp = Math.Abs(i).ToString();
//other stuff here
}
当 input1 的值为 -2147483648 时,我得到错误
对二进制补码的最小值取反是无效的。
我有点明白这是由于溢出异常。但是我该如何克服呢?请有任何建议。
+2147483648
大于 a 的最大值int
,即 2 31 - 1。
相反,您可以使用 a long
; 其最大值为 2 63 - 1。
如果这对你来说还不够;使用BigInteger
.
正如@SLaks 所说
+2147483648 大于 int 的最大值
您可以使用Int32.MaxValue
and来检查Int32.MinValue
:
x = -2147483648
if(Int32.MaxValue <= x || Int32.MinValue >= x) {
return x;
}