main()
{union
{
int i[2];
long k;
char c[4];
} r,*S=&r;
s->i[0]=0x39;s->i[1]=0x38;
printf("%x\n",s->c[0]);
}
谁能详细给我解答一下怎么来的。答案是39。没看懂答案说什么高8位低8位
1 回答
已采纳
asd8532
TA贡献143条经验 获得超187个赞
int类型的变量占2/4个字节,1个字节占8个bit位,所以s->i[0]=0x39,内存中的二进制值应该是
00111001 00000000
然后s->i[1]=0x38,内存中的值为:
00111000 00000000
而一个char类型的变量只占1个字节,所以字符数组C中的值的对应情况应该是
c[0] = 00111001 =39
c[1] = 00000000 = 0
c[2] = 00111000 =38
c[3] = 00000000 = 0
所以输出c[0]的值就是00111001,转换成16进制就是39(%x的意思就是16进制显示)
- 1 回答
- 0 关注
- 1873 浏览
添加回答
举报
0/150
提交
取消