鞋架摆放:C语言问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 02:02:06
main{

union{
short i[2];
long k;
char c[4];
{
r,*p=&r;
p→i[0]=0x39;
p→i[1]=0x38;
printf("%x,%x,%x,%x \n" , p→c[0],p→c[1],p→c[2],p→c[3];)
}
}
}
答案是39 0 38 0 为什么是这样的?谢谢

union是同一时刻只能取其中之一的一种结构,所以在你设置它的时候用的是i这个变量,所以就是short类型的值,占两个字节,这对于后面调用p->c[0]的时候(char类型,1字节)时就是39003800H了。也就是说short 0x39=char 0x39 0x00