1

这是我的代码。

string strTemp = "";
for (int i = input1; i <= input2; i++)
{
    strTemp = Math.Abs(i).ToString();
    //other stuff here
}

当 input1 的值为 -2147483648 时,我得到错误

对二进制补码的最小值取反是无效的。

我有点明白这是由于溢出异常。但是我该如何克服呢?请有任何建议。

4

2 回答 2

14

+2147483648大于 a 的最大值int,即 2 31 - 1。
相反,您可以使用 a long; 其最大值为 2 63 - 1。

如果这对你来说还不够;使用BigInteger.

于 2013-04-21T13:21:24.070 回答
0

正如@SLaks 所说

+2147483648 大于 int 的最大值

您可以使用Int32.MaxValueand来检查Int32.MinValue

x = -2147483648
if(Int32.MaxValue <= x || Int32.MinValue >= x) {
    return x;
}
于 2021-10-08T09:11:39.290 回答