c语言程序阅读题,不知解题过程。

img

37题,知道结果15.但不明白真实过程,解题过程,自学考试题,没人去问,希望有人帮助下,谢谢!!

union 的特性,成员占用同一个内存单元。
ch=240 二进制为 1111 0000, alias跟ch同一个内存单元,bit0 =1111 bit1=0000
后面操作交换bit0和bit1,最好bit0=0000,bit1=1111
ch的二进制位0000 1111,也就是15

union是联合类型,所有成员共享内存。所以整个test占一个字节
unsigned char bit0:4,bit1:4表示变量bit0的值为字节的高四位,bit1是第四位
ch = 240,16进制就是0xF0,所以 bit0=15,bit1 = 0
接下来三行就是实现bit0和bit1的交换,最终ch的高四位和第四位交换位置,就是0x0F了。所以输出值为15

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632