#include <stdio.h>
int main()
{
union a
{
short int i;
char ch[2];
};
union a u;
u.ch[0]=3;
u.ch[1]=2;
printf("%d\n",u.ch[0]);
printf("%d\n",u.ch[1]);
printf("%d\n",u.i);
//printf("%d %d %d",u.ch[0],u.ch[1],u.i);
return 0;
}
给定的代码输出为3,2,515,它是如何515?
答案 0 :(得分:3)
您的机器是小端,因此MSB为2
,LSB为3
。
2 * 256 + 3 = 515
答案 1 :(得分:1)
由于您使用的是union,因此两个元素都存储在同一个地址中。因此,您可以使用值3和2编写ch
个字符。
我认为您的计算机配有英特尔CPU计算机,其架构为小端,因此数据将从LSB
存储到MSB
。
RAM表示:
your_adress : 2
your_adress + 1: 3
那就是:
your_adress: 0x0203
现在将其转换为十进制,你得到
2*256 + 3 = 515