我有这段代码:
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];
}
我已经检查以确保我的数组“primes”只包含像这样的正整数:
if (primes[i] < 0)
{
Console.WriteLine(primes[i]);
}
但不会打印任何内容。但是,出于某种原因,总和有时会是负数,并且会在我运行第一段代码时打印出来。数组的长度是148933。我不太了解C#,但我不认为长度在这里很重要? :S
如果有人知道为什么会这样,我将不胜感激。
最佳答案
the length of the array is 148933.
很可能您的求和超出了 int (-2,147,483,648 到 2,147,483,647) 的可能值,这就是您看到负数的原因。
使用 long
进行求和计算。但你可能需要 BigInteger计算总和。
关于c# - 数组中的正整数总和为负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678514/