抱歉英语不好。
假设代码(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
它已经存在。我很困惑。