【c语言共同体】一道题目,不会做,求解答。高分悬赏。谢谢
1、下面程序运行后的结果是_______。#include"stdio.h"main(){union{inta[2];longb;charc[4];}s;s.a[0]=0...
1、
下面程序运行后的结果是_______。
#include"stdio.h"
main()
{ union { int a[2];
long b;
char c[4];
}s;
s.a[0]=0x39;
s.a[1]=0x38;
printf("%lx\n",s.b);
printf("%c\n",s.c[0]);
}
请问共用体里面存放的数据是不是都是 00111001 00111000?
其他我就不会做了。呜呜 展开
下面程序运行后的结果是_______。
#include"stdio.h"
main()
{ union { int a[2];
long b;
char c[4];
}s;
s.a[0]=0x39;
s.a[1]=0x38;
printf("%lx\n",s.b);
printf("%c\n",s.c[0]);
}
请问共用体里面存放的数据是不是都是 00111001 00111000?
其他我就不会做了。呜呜 展开
4个回答
2015-01-05
展开全部
int a[2]占8个字节.39 00 00 00 38 00 00 00
展开全部
看这个写法上 应该指的16位机
所以 a[2] b c[4]占的都是4个字节的空间
就像你说的
存放的数据都是16进制的 0x39 0x38
但由于int占两个字节 所以在这个四字节空间中 存放的是
0x39 0x00 0x38 0x00(按照常见的EL存储)
这样 输出b的时候就是
380039
输出c[0]的时候 就是x039的对应字符 也就是字符
9
所以 a[2] b c[4]占的都是4个字节的空间
就像你说的
存放的数据都是16进制的 0x39 0x38
但由于int占两个字节 所以在这个四字节空间中 存放的是
0x39 0x00 0x38 0x00(按照常见的EL存储)
这样 输出b的时候就是
380039
输出c[0]的时候 就是x039的对应字符 也就是字符
9
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个要考虑到大、小端序(与电脑、编译器等等有关)和字节数。
共用体里数据的排序可能是:00111001 00111000
也可能是:10011100 00011100(顺序反过来)
公用体的字节数 = 其中一个拥有最大字节数 数据的字节数
其他小于该字节数的数据 = 截短后最大字节数的数据。
共用体里数据的排序可能是:00111001 00111000
也可能是:10011100 00011100(顺序反过来)
公用体的字节数 = 其中一个拥有最大字节数 数据的字节数
其他小于该字节数的数据 = 截短后最大字节数的数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的,但是printf输出要转换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询