为了账号安全,请及时绑定邮箱和手机立即绑定

union的用法。来个人解答一下。谢谢大家了

union的用法。来个人解答一下。谢谢大家了

C C# C++
kathria 2017-03-08 16:05:40
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进制显示)

查看完整回答
2 反对 回复 2017-03-14
  • 1 回答
  • 0 关注
  • 1873 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信