14
#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 的书“Union can only be initialized with a value of its first member”中所述的规则,而是初始化第二个变量?

4

1 回答 1

15

K&R 是一本很棒的书,但它很旧。在 C99 中你可以这样做。

在同一示例中使用指定的初始化程序,以下初始化第二个联合成员 age :

union {
       char birthday[9];
       int age;
       float weight;
      } people = { .age = 14 };
于 2013-06-16T17:30:24.110 回答