1
int x[1000] = {0, }; 

これは初期化に関するもので、右側にオペランドがない,が表示されます。

コンパイラがエラーを報告します。

CC++の両方とは異なるかもしれない(?)と思い、両方にタグを付けています。

4

2 に答える 2

1

ISO/IEC 9899:TC3 6.7.8 初期化より

26 例 3

宣言

int y[4][3] = {
{ 1, 3, 5 },
{ 2, 4, 6 },
{ 3, 5, 7 },
};

完全に括弧で囲まれた初期化を伴う定義です: 1、3、および 5 は、y の最初の行 (配列オブジェクト y[0])、つまり y[0][0]、y[0][1]、および y を初期化します。 [0][2]。同様に、次の 2 行は y[1] と y[2] を初期化します。初期化子は早期に終了するため、y[3] はゼロで初期化されます。正確に同じ効果が達成された可能性があります

int y[4][3] = {
1, 3, 5, 2, 4, 6, 3, 5, 7
};

y[0] の初期化子は左中かっこで始まらないため、リストの 3 つの項目が使用されます。同様に、次の 3 つは y[1] と y[2] に対して連続して取得されます。

したがって、少なくとも c99 では完全に合法です。

于 2013-09-30T10:48:34.100 に答える