我有两个 C++ 代码,其中一个具有全局 int 数组,而另一个代码具有一个本地数组,其长度由用户输入确定(因此在运行时)。两个数组都没有显式初始化。
#include <iostream>
using namespace std;
int M = 1000;
int a[M];
int main() {
for(int i = 0; i < M; i++)
cout << a[i];
cout << endl;
}
#include <iostream>
using namespace std;
int main() {
int M;
cin >> M;
int a[M];
for(int i = 0; i < M; i++)
cout << a[i];
cout << endl;
}
我观察到全局数组用零填充,而本地数组(其长度在运行时确定)没有用零填充,而是用随机数填充(但一次相同)。我使用了 g++ 编译器。
这是什么行为?C++ 标准是否定义了这种行为?