c语言一道问题求解

#include<stdio.h>unionss{shortinti;charc[2];};voidmain(){unionssx;x.c[0]=10;x.c[1]=1;... #include<stdio.h>
union ss
{short int i;
char c[2];
};
void main()
{union ss x;
x.c[0]=10;
x.c[1]=1;
printf(“%d,x.i”)}

为什么答案是266啊,,求详细讲解,共用体不是很清楚
展开
 我来答
风雷九州
2015-04-24 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:428万
展开全部
共同体,顾名思义,就是所有成员都是共同的,大家占用同一块存储空间。而共同体占用的存储空间是所有元素中最大的。

题目中的共同体一共两个元素,shot int i和char c[2],每个元素都占用2个字节的存储空间,所以这个共同体union ss x,就占用2个字节。

后续代码中对x.c[0]和x.c[1]赋值,即给这2个字节的存储空间赋值。第一个字节的值是10,第二个字节的值是1。

由于x.i和x.c一起占用这2个字节的存储空间,那么x.i的第一个字节的值也是10,第二个字节的值也是1。这就是共同体的奇妙之处,给其中任何一个元素赋值,也就相当于给另一个元素赋值了。

一个字节的数值是256,即x.i的高位是1,即1*256,低位是10,所以x.i的值就是1*256+10=266
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式