编译器之间的不同输出
问题描述:
我正在做项目欧拉的第一个问题。编译器之间的不同输出
我有以下代码:
#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.是什么原因造成这种差异?
答
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;
}
'number','sum'未初始化,因此未定义行为。用'gcc -Wall'编译的 – AlexD 2014-11-22 23:16:38
会指出问题。 – jch 2014-11-22 23:37:01