C语言问题
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字节)时就是***********H了。也就是说short 0x39=char 0x39 0x00