我从int x [3]得到一个非常奇怪的输出;

时间:2018-10-15 02:07:42

标签: c++ initialization

所以我在C ++中键入了以下代码

#include <iostream>
using namespace std;
int main() {
    int x[3];
    cout << x[1] << endl;
    return 0;
}

当我运行它时,它打印出-272632344而不是0。为什么?

2 个答案:

答案 0 :(得分:6)

default initialization中,

  

如果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

  

默认情况下,局部范围的常规数组(例如,在函数内声明的数组)未初始化。这意味着其元素均未设置为任何特定值。在声明数组时,它们的内容尚未确定。