想知道ch0 ch1的101和141是怎么来的
想知道ch0 ch1的101和141是怎么来的
画了个图,解读再图片里了
希望能帮到你
注意我这里是按小端序存放到内存的,如果是大端序ch[0],ch[1]调换
代码运行实践验证,如图
#include<stdio.h>
void main()
{
union int_char
{
int i;
char ch[2];
} x;
x.i=24897;
printf("i=%o\n",x.i);
printf("ch0=%o,ch1=%o\nch0=%c,ch1=%c\n",x.ch[0],x.ch[1],x.ch[0],x.ch[1]);
}
union是i和char[2]共享内存,int是四个字节,假设所占空间为[a][b][c][d],每个[]表示一个字节,char长度是一个字节,char[0]就存储在[d]中,char[1]就存储在[c]中
x.i=24897,为了方便计算转16进制是6141,因为16进制的每个位表示二进制的4个位,所以16进制的每两个位表示长度是一个字节,所以此时内存中[00][00][61][41],所以char[0]=41,41是十六进制,转八进制就是101,同理char[1]=61,转八进制141