構造体の初期化 – プログラミング – Home

通知
すべてクリア

[解決済] 構造体の初期化


ほいみ
 ほいみ
(@ほいみ)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

お世話になっています、ほいみといいます。
VC++6と7では、構造体の初期化に次のような事が書き方ができました。
struct A { int a, b, c, d, e; };
void f()
{
A a = { 1 };
// a.a==1,残りのメンバは0 となっている
}
これはどの環境でも通用する書き方でしょうか。
それともVC++のみでしょうか。


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

ISO C/C++の処理系であればどの処理系でも通用します。


返信引用
あきゅら
 あきゅら
(@あきゅら)
ゲスト
結合: 22年前
投稿: 3
 

そこはいいけど

> // a.a==1,残りのメンバは0 となっている

ここはどうかと思いますよ。。


返信引用
ほいみ
 ほいみ
(@ほいみ)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

>ここはどうかと思いますよ。。
環境によっては初期値を指定してないメンバが0になるとは限らないという事ですね。
YuOさん、あきゅらさん、どうもありがとうございました。


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

初期化子を一つ指定すれば、残りは 0 になるって決まってませんでしたっけ?


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

B・ストラウストラップ、M・A・エリス、
C++リファレンスマニュアルの 8.4.1 によれば、

>並び中の初期設定子が集合体のメンバの数より少ない場合、
>その集合体は適切な型の0で満たされる。

らしいので、0で満たされるのでしょう。

ですが、個人的な意見としてはそれに依存したコードを書くべきではないと思います。
保守する人を混乱させます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました