C 当union类型变量初始化任何值时,那么该值是否初始化为每个union元素?

C 当union类型变量初始化任何值时,那么该值是否初始化为每个union元素?,c,C,在下面的程序段中,union y初始化了y={100} 然后,应将其分配给a、b和c所有元素或仅分配给第一个元素a。当使用{100}时,成员a的值为100。这是因为大括号初始化会初始化第一个联合成员 您应该将联盟的其他成员视为非活动且未初始化。此程序无法运行,因为y不是变量。这是一种类型。你为什么不自己试试呢?如果你不介意的话,我已经解决了这个问题,所以它可以编译。向上投票,因为我现在还不知道答案。联合体一次只有一个元素。@Bathsheba:这与结构体的情况完全一样。您可以使用指定的初始化器(

在下面的程序段中,union y初始化了y={100}
然后,应将其分配给a、b和c所有元素或仅分配给第一个元素a。

当使用
{100}
时,成员
a
的值为100。这是因为大括号初始化会初始化第一个
联合
成员


您应该将
联盟的其他成员视为非活动且未初始化。

此程序无法运行,因为y不是变量。这是一种类型。你为什么不自己试试呢?如果你不介意的话,我已经解决了这个问题,所以它可以编译。向上投票,因为我现在还不知道答案。
联合体一次只有一个元素。@Bathsheba:这与
结构体的情况完全一样。您可以使用指定的初始化器(这通常是一个很好的建议)。成员
unsigned char next_成员[sizeof first_member_type]是否有例外
next_member[]
也可以很好地初始化吗?是的,确实有例外-与第一个成员重叠的无符号字符数组部分是一个重要的例子,即使-我认为-第一个成员包含填充位。我自以为是地认为我在回答中的措辞很谨慎,尤其是在“应该”方面。当我回到家时,我可能会把这一部分变成一个问题。@Bathsheba“你应该把工会的其他成员看作是不活跃的、没有经验的。”真的是这样吗?我用gcc和clang做了一些测试,所有其他成员都是零。你能告诉我一些你是如何得出这个结论的吗?@Lazureus:C标准谈到了“工会的活跃成员”。@Bathsheba,谢谢我要搜索它,你能告诉我你在哪里找到其他成员未初始化的声明吗?
typedef union jkk
{
    int a;
    char b[10];
    float c;
} y;

int main(){
    y instance_of_y = {100};
}