// 联合体关键字:union 也叫共用体
// 联合体 :多个成员变量共用一个存储空间
// 联合体的空间大小是 联合体中成员变量中存储空间最大的那个变量
// 联合体的大小计算
// 当最大成员大小不是最大对齐数的整数倍时,会对齐到最大对齐数整数倍
// 联合体也存在内存对齐
// union un {
// int a;
// char b[5];
// };
// union xocde {
// int a;
// short b[7];
// };
// int main()
// {
// printf("%zd\n", sizeof(union un)); // 8
// printf("%zd\n", sizeof(union xocde)); // 16
// return 0;
// }
// 为最大的成员变量分配存储空间,所有的成员都用这个存储空间
// 同时只能使用一个成员// union un {
// int a;
// char b;
// };
// int main () {
// union un u ={0};
// printf("%zd\n", sizeof(u));
// return 0;
// }// 礼品清单🧾
//
// struct gift_order {
//
// // common info
// double price;
// char type[20];
//
// // specific info
// union {
// struct gift_book {
// char author[20];
// char publisher[20];
// int pages;
// } book;
// struct gift_cd {
// char singer[20];
// char album[20];
// int tracks;
// }stereotype;
// };
// };
// int main () {
// struct gift_order order = {
// .price = 10.0,
// .type = "book",
// .book = {
// .author = "Tom",
// .publisher = "Tom's Publisher",
// .pages = 100
// }
// };
// struct gift_order stereotype = {
// .price = 10.0,
// .type = "stereotype",
// .stereotype = {
// .singer = "Tom",
// .album = "Tom's Album",
// .tracks = 10
// }
// };
// printf("The gift is %s\n", order.type);
// printf("The book is %s by %s\n", order.book.author, order.book.publisher);
// printf("The stereotype is %s by %s\n", stereotype.stereotype.singer, stereotype.stereotype.album);
// return 0;
// }
// 联合体判断当前机器是大端还是小端// union un {
// int a;
// char b;
// };
// int main() {
// union un u; // 初始化一个变量 充分利用了联合体取出1个字节的便捷性
// // 00 00 00 01
// // 01 00 00 00
// u.b = 1;
// if (u.a == 1) {
// printf ("小端\n");
// }
// else {
// printf ("大端\n");
// }
// }