通知
すべてクリア
Topic starter
2003年5月31日 11:57 AM
お世話になっています、ほいみといいます。
VC++6と7では、構造体の初期化に次のような事が書き方ができました。
struct A { int a, b, c, d, e; };
void f()
{
A a = { 1 };
// a.a==1,残りのメンバは0 となっている
}
これはどの環境でも通用する書き方でしょうか。
それともVC++のみでしょうか。
2003年5月31日 12:46 PM
ISO C/C++の処理系であればどの処理系でも通用します。
2003年5月31日 10:29 PM
そこはいいけど
> // a.a==1,残りのメンバは0 となっている
ここはどうかと思いますよ。。
Topic starter
2003年6月1日 1:59 AM
>ここはどうかと思いますよ。。
環境によっては初期値を指定してないメンバが0になるとは限らないという事ですね。
YuOさん、あきゅらさん、どうもありがとうございました。
2003年6月1日 7:13 PM
初期化子を一つ指定すれば、残りは 0 になるって決まってませんでしたっけ?
2003年6月2日 4:00 AM
B・ストラウストラップ、M・A・エリス、
C++リファレンスマニュアルの 8.4.1 によれば、
>並び中の初期設定子が集合体のメンバの数より少ない場合、
>その集合体は適切な型の0で満たされる。
らしいので、0で満たされるのでしょう。
ですが、個人的な意見としてはそれに依存したコードを書くべきではないと思います。
保守する人を混乱させます。