【发布时间】:2016-08-14 01:42:45
【问题描述】:
C 新手,如果这是初级的,请原谅我,但我无法在谷歌上找到一个成功的搜索词。
从一门新语言开始时,我喜欢在 Project Euler 上做一些问题,所以我从问题一开始并遇到了问题。
我的代码...
#include <stdio.h>
int main()
{
int x;
int sum;
for (x = 0; x < 10; x++) {
if ( x % 3 == 0 || x % 5 == 0 ) {
sum = sum + x;
printf( "number is %d. sum is %d\n", x, sum );
}
}
printf( "The sum of the multiples of 3 and 5 below 1000 is %d\n", sum );
}
现在当我运行它时,我得到了输出......
number is 0. sum is 32767
number is 3. sum is 32770
number is 5. sum is 32775
number is 6. sum is 32781
number is 9. sum is 32790
uhhhh .....我可以看到它在增加正确性,但是为什么这个数字从 32767 开始呢?它就这样存在于我的记忆中吗?是否有其他程序为此设置了 sum 变量,现在它正在被 this 调用?
如果是这样,那为什么当我运行我的程序两次时它仍然会出现相同的结果?它似乎总是从 32767 开始
我通过将其设置为int sum = 0; 来解决这个问题
但我想了解我的原始代码中发生了什么。
【问题讨论】:
-
您预计会发生什么?
-
就像我说我是 C 新手,所以我以前从未处理过这些问题。我知道这与内存有关,而不是设置变量,但我问的是幕后发生了什么
-
嗯,你应该对你的代码会做什么有某种期望..
-
我希望它从 0 开始工作。看到结果我可以看到我需要将它设置为 0,我怎么能期望 32797 出来? IDK
-
顺便说一下,它并不总是 32797。
标签: c