下面这个共用体赋值怎么理解

img

img


为什么最后b[3]以%d输出结果为0啊?这和char型以及int型变量的字节长度有关吗?还是说只要最后一步赋值类型来决定的呢?有没有兄弟解释一下。

共同体就是这两个变量占用同一块内存
由于字节序是低字节在前,高字节在后,因此%x输出16进制的a结果是f,而b.b[3]的值为0

这是一个union
u.a和u.b占据的是同一块内存
你给a赋值成f,这只占一个字节呀
你可以循环打印u.b,看到底哪个字节是f,不要瞎猜,你随便打印个u.b[3]是想干什么

图片贴错了,这是第一张图

img