c语言共用体输出问题

[复制链接]
查看11 | 回复2 | 2018-4-12 20:00:34 | 显示全部楼层 |阅读模式
这个是共用体的问题由于共用体共用同一段起始内存的地址,所以后一次的数据写入可能会覆盖前一次的数据然后lz这道题,如果系统将int做2直接处理(比如TC2)的话,结果是380039和9;如果是按4字节处理的话,结果应该是39和9下面针对lz的结果,讲一下2字节处理的情况第一个共用体成员是int的数组,两个元素,共4字节第二个成员是long,4字节第三个成员是char数组,4个元素,4字节所以这个union变量共4字节s.a[0]=0x39;s.a[1]=0x38;导致变量s的内存存储的16进制数据(小尾存储的话)高位到低位依次为为00 38 00 39所以才会导致输出380039和94字节处理的话,同理...
回复

使用道具 举报

千问 | 2018-4-12 20:00:34 | 显示全部楼层
#includeunion{
int a[2];
long b;
char c[4];}s;int main(){s.a[0]=0x39;s.a[1]=0x38;printf("%lx\n",s.b);printf("%c\n",s.c[0]);r...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行