プロが教える店舗&オフィスのセキュリティ対策術

ポインタ配列で
    char *w[] = { "sun", "mon", "tue", };
のように次に何の要素もないのにtueの後にコンマがついていることがある理由を教えてください。

A 回答 (4件)

カンマがあってもなくても意味は変わりませんが、要素を縦に並べた時に楽できます。



(1) 配列に、"wed" を追加したいときに、 "tue"の後ろにカンマをつける必要がない。

(2) "tue"と"sun"を入れ替えたいときに、"tue"の後ろにカンマをつけて、"sun"の後ろのカンマを外す必要がない。

対称性の面から美しくしいというプログラマーの自己満足かもしれませんが、案外こういうこだわりがあるものです。

char *w[] = {
"sun",
"mon",
"tue",
};
    • good
    • 0

かつての C の仕様では「つけてはいけない」ことになっていたのですが, #2 で言われるように「あってもいいとした方が便利」なので現在の規格では「最後の要素の後にコンマをつけてもいい」と変更されました.


配列だけでなく, 同じようにコンマで区切る列挙型の定義でも同様に「最後の要素の後にコンマをつけてもいい」ことになっています.
まあ, 1行で書くとあまりありがたみはないんだけど, 例えば
char *eng[] = {
"zero",
"one",
"two",
"three",
};
なんて複数行で書くと「おっと, 追加しなきゃ」ってときに単純に増やすだけですむので楽. 最後の "three" のあとのコンマがあるときとないときで「どのくらい気を遣うか」を考えてみてください.
    • good
    • 0

ポインタ配列に限らないはずですよ。



コンマがあってもエラーにならないほうが、ツールなどでソースを自動生成するのに便利だからです。
    • good
    • 0

テストして無いのでいけませんが、最後のカンマ無しでコンパイルしてみてください。

多分大丈夫です。私は最後にカンマつけて書いたことないです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!