0

私はc99で正常にコンパイルされる単純なCプログラムを持っていますが、ANSIでは次のように文句を言います。

初期化子の周りに中括弧がありません

問題のある行は次のとおりです。

int myarr[3][3]={0};

ANSI Cが不満を言っているのはなぜですか?{0}の周りに{}を追加するという投稿を見ましたが、それは私には意味がありません...

(重要な場合に備えて、CentOSでコンパイルしています)

4

2 に答える 2

3
int myarr[3][3]={0};

これは完全に有効なCです。この場合、警告はコンパイラからの単なる表示です。

警告を取り除きたい場合は、次のことができます。

int myarr[3][3]={{0}};

または、オプションで使用して-Wno-missing-bracesいる場合は追加します。gcc-Wall

于 2013-01-20T21:29:12.863 に答える
3

多次元配列を初期化する場合は、厳密に(ANSI Cの下で)中括弧を追加する必要があります。たとえば、各要素を特定の値に初期化する場合、次のようにします。

int myarr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
于 2013-01-20T21:32:45.123 に答える