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

A very bizarre output I got from int x[3];

本文关键字:一个 非常 输出 int 我从      更新时间:2023-10-16

所以我在C++中输入了下面的代码

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

当我运行它时,它会打印出 -272632344 而不是 0。有什么原因吗?

在默认初始化中,

如果 T 是数组类型,则数组的每个元素都是默认初始化的;

然后

否则,不执行任何操作:具有自动存储持续时间的对象(及其子对象(初始化为不确定值。

尝试打印出这些不确定的值会导致未定义的行为。

如果您希望将所有元素初始化为零,则可能需要聚合初始化,例如

int foo [3] = {}; // all the elements will be value-initialized to zero
int foo [3] {};   // same as above

数组未初始化,它获取内存中当前随机值。

您可以像这样初始化数组:

int foo [3] = { 0, 0, 0 };

另请参阅此处的"初始化数组"部分:

默认情况下,本地作用域的常规数组(例如,在函数中声明的数组(保持未初始化状态。这意味着其任何元素都不会设置为任何特定值;在声明数组时,它们的内容是不确定的。