2 つの C++ コードがあり、1 つはグローバルな int 配列を持ち、もう 1 つのコードはローカル配列を持ち、その長さはユーザー入力によって (実行時に) 決定されます。どちらの配列も明示的に初期化されていません。
#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++ 標準はこの動作を定義していますか?