c语言的这题看不懂,{int k char i[2];}*s,a; s=&a; s->i[0]=0x39;s->i[1]=0x38; printf("%x\n",s->k);

 我来答
Laplas
2011-07-21 · TA获得超过1万个赞
知道大有可为答主
回答量:2680
采纳率:50%
帮助的人:2437万
展开全部
开始还以为是用struct, 仔细看看原来是union.

union
{
int k;
char i[2];}
*s,a;
// 定义了一个union的格式,
内容是一个整数和一个长度为2的字符串。
问题是VC里面int 都是 4字节的了,这样用不合理。
最好改为short
union
{
short k;
char i[2];
}*s,a;

s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%x\n",s->k);
如果是结构,那么s->k是没有赋值的,可能显示任意值。
如果是union,就合理了。因为short和char[2]共享内存空间,
根据short存储先低后高的原理, 会显示 3839
追问
不好意思哟,我是初学者,完全不知道你再说什么,我我我。。。。。哎!
追答
没事,看不懂不要分。
自己多做些试验把。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式