union的用法。来个人解答一下。谢谢大家了
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位
kathria
浏览 1874回答 1
1回答
-
asd8532
int类型的变量占2/4个字节,1个字节占8个bit位,所以s->i[0]=0x39,内存中的二进制值应该是00111001 00000000然后s->i[1]=0x38,内存中的值为:00111000 00000000而一个char类型的变量只占1个字节,所以字符数组C中的值的对应情况应该是c[0] = 00111001 =39c[1] = 00000000 = 0c[2] = 00111000 =38c[3] = 00000000 = 0所以输出c[0]的值就是00111001,转换成16进制就是39(%x的意思就是16进制显示)
打开App,查看更多内容