文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.3.4 联合体变量的初始化
在定义联合体变量时,也可对其进行初始化。不过,由于联合体中不能同时存储多个成员的值。因此,在初始化的时候,只应对一个成员进行初始化,即在初始化列表中只放有一个初始值。在默认情况下,会将这个初始值初始化给联合体变量的第一个成员。例如:
union A a1 = {'A'};
定义 union A 类型的联合体变量 a1,并对其进行初始化。由于联合体变量 a1 的第一个成员是 char 类型的,因此,初始值列表中只有一个 char 类型的常量值'A',编译器会将这个初始值'A'初始化给联合体变量 a1 的第一个成员 a。如果在初始值列表中给出多个初始值,在编译时,编译器会给出警告信息。例如:
union A a1 = {'A', 35};
当编译时,会出现如下警告信息:
warning: excess elements in union initializer
意思是说,在初始值列表中给出的初始值过多。
如果想对其他位置的成员进行初始化,则可以通过指定初始化方式。例如:
union A a1 = {.b = 35};
通过指定初始化方式,将联合体变量 a1 的成员 b 初始化值为 35。
最后,和结构体一样,也可以将一个联合体变量作为初始值,直接初始化给同类型的另一个联合体变量。例如:
union A a2 = a1;
定义了 union A 类型的联合体变量 a2,并将联合体变量 a1 作为初始值,对联合体变量 a2 进行初始化。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论