编译器使用错误的值初始化

时间:2014-07-08 19:46:54

标签: c++

我已声明这些变量,然后使用此代码在屏幕上打印。

int totalAge = 0;  
float totalGPA = 0.0;
cout << "totalAge "<<totalAge << endl << "TotalGPA " << totalGPA;

输出就是这个。

totalAge 1975299651
TotalGPA -1.51482e+037

所以,现在我想知道为什么这两个变量分配了这些值,如果编译器为它们分配了值,那么为什么它没有赋值然后默认值为零?

3 个答案:

答案 0 :(得分:5)

也许没有默认值,编译器只使用之前位置的垃圾。

如果你想要一个初始值,你应该明确地设置一个。

int totalAge = 0;  
float totalGPA = 0.0f;

答案 1 :(得分:4)

您正在使用未初始化的局部变量,这会调用未定义的行为。这永远不会好,任何事情都可能发生。由于标准没有指定结果应该是什么,因此取决于具体的编译器实现。

答案 2 :(得分:0)

由于您正在尝试打印未初始化的变量,因此它显示了一些垃圾值。 首先将变量初始化为某个默认值,同时声明它。

例如。 int totalAge = 0;

然后尝试打印,您将获得具有初始化值的输出。