#include <stdio.h>
union p
{
int x;
char y;
}
k = {.y = 97};
int main()
{
printf("%d\n", k.y);
return 0;
}
OUTPUT: 97
我遇到了这个问题。我们知道我们只能初始化Union的第一个成员。但在此,在初始化时,y
变量通过一些给定的方法初始化!
任何人都可以向我解释 k = {。Y = 97} 是如何违反Dennis Ritchie所着的规则“联盟只能用其第一个成员类型的值初始化“而是初始化第二个变量?
答案 0 :(得分:15)
K&amp; R是一本很棒的书,但它已经很老了。在C99你可以这样做。
在同一示例中使用指定的初始化程序,如下所示 初始化第二个工会会员年龄:
union {
char birthday[9];
int age;
float weight;
} people = { .age = 14 };