英語が下手でごめんなさい。
コード(C99以降)を想定します。
typedef struct {
int a, b;
} foo_t;
foo_t f = { .a = 1, .b = 2 };
f = (foo_t){ .b = 3 };
今は何f.a
ですか?C規格はこれについて何か言っていますか?
部分的な初期化の場合、標準では、初期化されていないすべてのメンバーが「適切なゼロ」(0
整数、0.0
浮動小数点、NULL
ポインターなど)に初期化されることが保証されていることを知っています。しかし、最後のステートメントは(私が理解しているように)初期化ではありませんf
。すでに存在しているからです。よくわかりません。