#include
union T
{int i;
char c[2];
};
void main()
{ union T a;
a.i=0x00006162;
putchar(a.c[0]);
putchar(a.c[1]);
}
0x61是a,0x62是b
0x00006162这是什么表示方法?
Intel的处理器是小端的,0x00006162在内存里其实是 0x62 0x61 0x00 0x00(把00 00 61 62反过来),所以a.c[0]输出b,a.c[1]输出a
0x开头的数字表示这个是16进制,一般用来表示字节很方便,因为正好2个字符是一个字节。
另外C语言还有0开头,表示八进制。
0x00006162是一个十六进制数,即二进制的0000 0000 0000 0000 0110 0001 0110 0010,a.c是字符类型,占八个bit,所以a.c[0]=01100010, a.c[1]=01100001