所以我在C ++中键入了以下代码
#include <iostream>
using namespace std;
int main() {
int x[3];
cout << x[1] << endl;
return 0;
}
当我运行它时,它打印出-272632344而不是0。为什么?
答案 0 :(得分:6)
如果T是数组类型,则数组的每个元素都将默认初始化;
然后
否则,什么也不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定的值。
尝试打印这些不确定的值会导致undefined behavior。
如果您希望将所有元素初始化为零,则可能需要aggregate initialization,例如
int foo [3] = {}; // all the elements will be value-initialized to zero
int foo [3] {}; // same as above
答案 1 :(得分:1)
该数组未初始化,它获取内存中当前的随机值。
您可以像这样初始化数组:
int foo [3] = { 0, 0, 0 };
另请参见“初始化数组”一节here:
默认情况下,局部范围的常规数组(例如,在函数内声明的数组)未初始化。这意味着其元素均未设置为任何特定值。在声明数组时,它们的内容尚未确定。