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?
其他我就不会做了。呜呜
【c语言共同体】一道题目,不会做,求解答。高分悬赏。谢谢
答案:3 悬赏:50 手机版
解决时间 2021-04-06 09:55
- 提问者网友:孤山下
- 2021-04-05 12:27
最佳答案
- 五星知识达人网友:长青诗
- 2021-04-05 12:56
看这个写法上 应该指的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
全部回答
- 1楼网友:时间的尘埃
- 2021-04-05 14:06
int a[2]占8个字节.39 00 00 00 38 00 00 00
- 2楼网友:傲气稳了全场
- 2021-04-05 13:36
这个要考虑到大、小端序(与电脑、编译器等等有关)和字节数。
共用体里数据的排序可能是:001. main()
{
union
{
unsigned int n;
unsigned char c;
}u1;
u1.c='b'; //这不是赋值了吗!仔细看看
printf("%c\n",u1.n);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯