2014-11-22 109 views
0

我正在做项目欧拉的第一个问题。编译器之间的不同输出

我有以下代码:

#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.当我编译这个海湾合作委员会中,我得到2686824.是什么原因造成这种差异?

+10

'number','sum'未初始化,因此未定义行为。用'gcc -Wall'编译的 – AlexD 2014-11-22 23:16:38

+1

会指出问题。 – jch 2014-11-22 23:37:01

回答

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; 
}