c语言中给b赋值b=0X12345678是什么意思?输出b=%x,为何是78?

如题所述

0x12345678
这个是16进制的表示方法
转换成2进制:
1 0010 0011 0100 0101 0110 0111 1000
union {int a; long b; unsigned char c; } m;
由于m是个联合结构
所以整个结构在内存中占一个long这么大的空间(在vc6.0中是32位二进制,现在应该是占64位),同时三个元素a,b,c共用这段内存
好了,
由于
m.b = 0x12345678;
所以,赋值后这段内存空间内的值就为:
0001 0010 0011 0100 0101 0110 0111 1000 (低32位,)
好了
unsigned char c;
c是个unsigned char类型
所以只取低8位二进制位,转成无符号char类型的数:
0111 1000
这8位二进制数,转成10进制数,就是120
所以
printf("%d\n", m.c);
以10进制整数的形式输出m.c就是120
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜