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
竞赛题目,根本就不明白,求高人讲一下~~~谢了 展开
#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
竞赛题目,根本就不明白,求高人讲一下~~~谢了 展开
2个回答
展开全部
所谓共同体就是所有变量公用内存空间,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。
被楼上的撞上了,但解法跟内存无关,根据条件判断才行。
c[0]数值为0x39;题目的意思是c[0]的内存值,根本就不是c[0]的内存地址,所以跟共同体的空间一点关系都没有,别被楼上的迷惑了。
正解:c[0]数值为0x39,转化成十进制数就是57,但是c[0]为字符型,输出的不是整形,所以将57转化为字符型。再根据题目给出的“字符0的ASCII码的十进制数为48”可知57的字符就是‘9’,所以输出的字符为9,选D。
被楼上的撞上了,但解法跟内存无关,根据条件判断才行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询