2016-07-09 37 views
-4

を含むCコードの行を理解するコードがある質問です。誰でも助けてくれますか?中括弧と括弧

+3

1つの要素を有しています。プログラミングの基本を教えるためにスタックオーバーフローは存在しません。 –

答えて

2

[]は、iomaskがサイズが初期値によって決まる配列であることを示しています。 {}はその初期化子です。配列や構造体の初期化に使用できます。

この場合、イニシャライザには1つの要素が含まれているため、iomaskは1要素の配列です。

+1

ありがとうございますdbush - フォローアップするには、配列が必要な理由が考えられますか?要素が1つだけの場合は、なぜスカラーとして 'iomask'を使用しないのですか? – DDC

+1

@DDC通常、この場合は配列は必要ありません。おそらくそれを説明するかもしれないいくつかの文脈がありません。 – dbush

+1

'int x = {0};'に中カッコを入れることができることに注意してください。先週、これが問題として発生したのかという疑問がありました。 C11規格の関連セクションは、§6.7.9初期¶11である:スカラーため_Theイニシャライザは、必要に応じてbraces._同じ言い回しで囲まれた単一の式、でなければならない、C99、さらにC89/C90であった(異なるセクション番号しかし)。 –

2

[ ]は、単に配列内にいくつの要素(または次元)があるかを示しますが、Cコンパイラでは配列の次元を省略することができ、リストされた要素の数に基づいて数を推測します。

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

{ }は、配列の要素のための初期化子を含む

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

に等しいです。あなたの例で

iomaskこれは、標準的な配列の宣言および初期化され、1UL<<4