将正整数加到int会使它变成负数

时间:2018-07-11 20:05:57

标签: c#

我的问题是,当我仅将正数加到整数时,有时会变成负数。我知道加到整数上的数字永远不会为正,因为我尝试将它们放入

maths.abs()

我的代码在下面,非常感谢您的帮助

int Total = 0;
int First = 0;
int Second = 10000;   
while (First <= Second)
{
    Total += 5000 + (250 * First);
    Console.WriteLine(Total);
    First++;
}
Console.ReadKey();

3 个答案:

答案 0 :(得分:5)

请阅读Checked and Unchecked (C# Reference)。您可以选择进行算术运算的边界检查。 EG:

int Total = 0;
int First = 0;
int Second = 10000;

while (First <= Second)
{
    checked
    {
        Total += 5000 + (250 * First);
    }

    Console.WriteLine(Total);
    First++;
}
Console.ReadKey();

答案 1 :(得分:2)

正如其他人所提到的,您的int不能使用该数字并且溢出。使用Int64可以满足您的需求。

Int64 Total = 0;
int First = 0;
int Second = 10000;   
while (First <= Second)
{
    Total += 5000 + (250 * First);
    Console.WriteLine(Total);
    First++;
}
Console.ReadKey();

答案 2 :(得分:1)

2,147,483,647是整数的极限,在循环的每次迭代中,您都将“ 1”添加到“第一个”整数中并溢出总整数

1 run = 5000 + 0
2 run = 5000 + 5000 + 250
...
10000 run 12,548,750,000

整数不能容纳该整数并溢出。

int64的限制为9,223,372,036,854,775,807。这将适用于您的代码