编译器之间的输出不同

时间:2014-11-22 23:15:29

标签: c

我在Project Euler上做了第一个问题。

我有以下代码:

#include <stdio.h>

int main() {
    int number;
    int sum;
    while (number < 1000) {
        if (number % 3 == 0 || number % 5 == 0) {
            sum += number;
            number++;
        }
        else {
            number++;
        }
    }
    printf("The answer is %d", sum);
    return 0;
}

当我通过compileonline.com编译时,我得到233168.当我在gcc中编译它时,我得到2686824.是什么导致了这种差异?

1 个答案:

答案 0 :(得分:3)

Compileonline可能会初始化变量。

您必须手动初始化它们。

#include <stdio.h>

int main() {
    int number = 0;
    int sum = 0;
    while (number < 1000) {
        if (number % 3 == 0 || number % 5 == 0) {
            sum += number;
            number++;
        }
        else {
            number++;
        }
    }
    printf("The answer is %d", sum);
    return 0;
}