返回介绍

7.3.4 联合体变量的初始化

发布于 2025-04-11 22:33:03 字数 742 浏览 0 评论 0 收藏 0

在定义联合体变量时,也可对其进行初始化。不过,由于联合体中不能同时存储多个成员的值。因此,在初始化的时候,只应对一个成员进行初始化,即在初始化列表中只放有一个初始值。在默认情况下,会将这个初始值初始化给联合体变量的第一个成员。例如:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。