2014-11-22 113 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; 
}