我是C的新手(刚开始).我来自
Java背景,我正在尝试下面的一段代码,将1和10之间的数字相加(包括),然后打印出总和:
/*
* File: main.cpp
* Author: omarestrella
*
* Created on June 7, 2010, 8:02 PM
*/
#include
#include
using namespace std;
int main() {
int sum;
for(int x = 1; x <= 10; x++) {
sum += x;
}
cout << "The sum is: " << sum << endl;
return 0;
}
当我运行它时,它总是打印32822.我知道答案应该是55并且意识到它打印最短值(32767)加上55.更改
int sum;
至
int sum = 0;
会工作(因为它应该,因为变量需要初始化!).但是为什么会出现这种情况呢?为什么编译器不会警告你这样的事情?我知道当没有初始化时,Java会尖叫你.
谢谢.
编辑:
我用g.这是g –version的输出:
我在Mac OS X上使用g.
nom24837c:~ omarestrella$g++ --version
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)