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