遇到一个问题,看到一个解答很棒,分享出来
以下程序运行后的输出结果是
#include<stdio.h>
union pw
int i;
char ch[2];
a;
main( )
a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);
A.13
B.14
C.208
D.209
解答:
原网页https://zhidao.baidu.com/question/1821393286873407108.html
c[0]是13,但你得转成二进制看,13二进制形式是00001101
c[1]是13,同样得转成二进制看,0二进制形式是00000000
c[0]在低字节,c[1]在高字节,拼起来就是
00000000 00001101
转回十进制是13
再拼上另一个答案作为补充:
原网页https://m.tikuol.com/2018/0103/432b928393c6d1edf3040954680fb6b9.html
在本题中,首先定义了一个共用体pw,其中有两个域:整型变量i和字符数组ch。**因为共用体中的域是共享内存空间的,数组元素由低到高存储:ch[0]在低字节;ch[1]在高字节;**整型变量i占两个字节,高位与ch[1]共用存储空间,低位与ch[0]共用存储空间,而高位 ch[1]的值为0,所以输出的成员变量i的值就是ch[0]的值13。