这个程序的结果是怎么得出来的?#includestruct byte{int x;char y;};union{int i[2];long j;char m[2];struct byte d;}r,*s=&r;main(){s->j=0x98765432;printf("%x\t%x\n",s->d.x,s->d.y);}
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 16:48:00
![这个程序的结果是怎么得出来的?#includestruct byte{int x;char y;};union{int i[2];long j;char m[2];struct byte d;}r,*s=&r;main(){s->j=0x98765432;printf(](/uploads/image/z/13856063-23-3.jpg?t=%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%E7%9A%84%E7%BB%93%E6%9E%9C%E6%98%AF%E6%80%8E%E4%B9%88%E5%BE%97%E5%87%BA%E6%9D%A5%E7%9A%84%3F%23includestruct+byte%7Bint+x%3Bchar+y%3B%7D%3Bunion%7Bint+i%5B2%5D%3Blong+j%3Bchar+m%5B2%5D%3Bstruct+byte+d%3B%7Dr%2C%2As%3D%26r%3Bmain%28%29%7Bs-%3Ej%3D0x98765432%3Bprintf%28%22%25x%5Ct%25x%5Cn%22%2Cs-%3Ed.x%2Cs-%3Ed.y%29%3B%7D)
这个程序的结果是怎么得出来的?#includestruct byte{int x;char y;};union{int i[2];long j;char m[2];struct byte d;}r,*s=&r;main(){s->j=0x98765432;printf("%x\t%x\n",s->d.x,s->d.y);}
这个程序的结果是怎么得出来的?
#include
struct byte
{
int x;
char y;
};
union
{
int i[2];
long j;
char m[2];
struct byte d;
}r,*s=&r;
main()
{
s->j=0x98765432;
printf("%x\t%x\n",s->d.x,s->d.y);
}
这个程序的结果是怎么得出来的?#includestruct byte{int x;char y;};union{int i[2];long j;char m[2];struct byte d;}r,*s=&r;main(){s->j=0x98765432;printf("%x\t%x\n",s->d.x,s->d.y);}
这个程序考察的是union联合和结构的存储问题.结构的存储很容易理解,就是结构体内部元素所占空间的和.这里的byte类型,就是int类型的4个字节加上char类型的1个字节.共5个字节空间.在union中,是内部的所有元素共同占用一个存储空间,空间的大小是元素里面最大元素所占空间的整数倍.联合r中,long j是最长的,占用8个字节空间.在主函数中,给j元素赋值,实际上union中也就只有这个数值了.输出时,以%x十六进制输出整数,所以就输出98765432.而由于前面的赋值,y元素 是空的,没有值,所以就输出0.