0

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++ 標準はこの動作を定義していますか?

4

2 に答える 2