C语言共同体问题

字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的执行结果是_______.#include<stdio.h>main(){union{inti... 字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的执行结果是_______.
  #include <stdio.h>
  main()
  { union
  { int i[4];
  long k;
  char c[6];
  }a,*s=&a ;
  s->i[0]=0x39;
  s->i[1]=0x38;
  printf(“%c\n”,s->c[0]);
  }
  A)5 B)3 C)6 D)9

竞赛题目,根本就不明白,求高人讲一下~~~谢了
展开
 我来答
sqiuzhao
2011-10-13 · TA获得超过1347个赞
知道小有建树答主
回答量:967
采纳率:0%
帮助的人:417万
展开全部
所谓共同体就是所有变量公用内存空间,C[0]的内存值其实等于int[0]低位数值,这里
c[0]数值为0x39;题目的意思是c[0]的内存值,根本就不是c[0]的内存地址,所以跟共同体的空间一点关系都没有,别被楼上的迷惑了。
正解:c[0]数值为0x39,转化成十进制数就是57,但是c[0]为字符型,输出的不是整形,所以将57转化为字符型。再根据题目给出的“字符0的ASCII码的十进制数为48”可知57的字符就是‘9’,所以输出的字符为9,选D。
被楼上的撞上了,但解法跟内存无关,根据条件判断才行。
湖南为什么
2011-10-12 · 超过10用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:19.8万
展开全部
答案选D。union分配最大的那个类型的字节空间,这里是int,总共16个字符空间(i[4]数组)
s->i[0]=0x39;s->i[1]=0x38;分配后去掉8个空间所以s->c[0]是9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式