Cでの「intarr [] = {}」と「intarr []」の違い

次のコードを見てください。

int arr[4];
for (int index = 0; index < 4; ++index) {
    printf("%d\t", arr[index]);
}

次のようにランダムな値を出力します。

27224   -6784   32766   0   

しかし、に設定arrすると{}、代わりにゼロが出力されます。

int arr[4] = {};
for (int index = 0; index < 4; ++index) {
    printf("%d\t", arr[index]);
}
0   0   0   0   

どうして?

トーマス

デフォルトでは、配列要素は初期化されていません。つまり、ガベージ値が含まれます。

int arr[4];

中括弧の初期化子を使用すると、初期値を明示的に設定できます。

int arr[4] = {1, 2, 3, 4};

ただし、中括弧内の数値の数が配列の長さよりも少ない場合、残りはゼロで埋められます。これがこの場合に起こっていることです:

int arr[4] = {};

これはCでは無効であり、C ++でのみ有効ですが、コンパイラは明らかにそれを許可していることに注意してください。標準Cでは、少なくとも1つの値を記述する必要があります。

int arr[4] = {0};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事