2014-11-22 3 views
0

Я делаю первую проблему на 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. Когда я компилирую это в НКУ я получаю 2686824. Что вызывает эту разницу?

+10

'number',' sum' не инициализированы, поэтому неопределенное поведение. – AlexD

+1

компиляция с 'gcc -Wall' указала бы на проблему. – jch

ответ

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; 
} 
Смежные вопросы