C ++程序计算所有五位奇数的总和?

时间:2015-04-25 17:55:59

标签: c++ sum

我对以下简单代码有疑问,我不知道为什么输出会变成负数...程序应该计算所有奇数和五位数的总和,如10001,10003,10005等

#include <iostream>

using namespace std;

int main()
{
    int num, sum = 0;

    for (num = 10001 ; num <= 99999 ; num+=2){
        sum += num;
    }

    cout << num << " " << sum;
    return 0;
}

2 个答案:

答案 0 :(得分:2)

您的int可能会溢出。将其切换为long

int num = 0;
long long sum = 0L;

假设您有一个4字节int,则最大值为2^31 - 1 == 2147483647See this example

你的金额将会出现2475000000,这将溢出。

答案 1 :(得分:2)

这意味着int类型溢出。那就是这种类型不能代表总和。我建议声明变量sum,如

long long int sum = 0;

之后,您可以将结果与存储在int类型中的最大值进行比较。例如

#include <limits>

//...

std::cout << std::numeric_limits<int>::max() << " " << sum << std::endl;;