数组中的正整数求和为负数

Hen*_*ren 1 c# arrays sum-of-digits negative-number

我有这段代码:

int[] primes = generatePrimes(bound);

int sum = 0;
for (int i = 0; i < primes.GetLength(0); i++)
{
    if (sum < 0)
    {
        Console.WriteLine(sum);
    }
    sum += primes[i];
}
Run Code Online (Sandbox Code Playgroud)

我检查过以确保我的数组"primes"只包含正整数,如下所示:

if (primes[i] < 0)
{
    Console.WriteLine(primes[i]);
}
Run Code Online (Sandbox Code Playgroud)

但什么都不打印.但是,由于某种原因,总和有时会是负数,并且在我运行第一段代码时会打印出来.数组的长度是148933.我不太了解C#,但我不认为长度在这里应该重要吗?:S

如果有人知道为什么会这样,我会非常感谢任何帮助.

Hab*_*bib 6

数组的长度是148933.

很可能你的总和超过int的可能值(-2,147,483,648到2,147,483,647),这就是你看到负数的原因.

使用long您和运算.但是您可能需要BigInteger来计算总和.