C语言结构体问题

main(){union{inta[2];longb;charc[4];}s;s.a[0]=0x39;s.a[1]=0x38;printf("%lx\n",s.b);pr... 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]);

}
为什么等于380039 9?
展开
 我来答
最大的宝宝
2020-03-31 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:385万
展开全部

在int是2个字节的c系统上(比如tc?我也不确定),就会得到你的答案。我把int改成short,以模拟这个结果。

一剑出血
高粉答主

2020-03-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.6亿
展开全部
你这个不是计算机的C编译器吧……int型只有2字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不解供耕织
2020-03-29 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:18万
展开全部

顺便贴上我以前做的笔记,便于你理解:

更多追问追答
追问
我明白你的意思了,可是我这道题答案是380039这个是为什么呢?
追答
假设是32位系统,long类型是4字节,那也应该打印39,咋会打印380039呢?实在想不到其他情况,或许是个哲学问题,在此呼叫苏格拉底~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贵菊求丹寒
2020-04-07 · TA获得超过3812个赞
知道大有可为答主
回答量:3151
采纳率:27%
帮助的人:404万
展开全部
注意typedef的用法,PRO表示的应是结构体类型,而不是它的变量。结构体数组放在main()中和放在main()外的区别是,前者可以在其它文件中通过extern引用,而后者不能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钮发须古香
2020-04-03 · TA获得超过3668个赞
知道小有建树答主
回答量:3009
采纳率:25%
帮助的人:198万
展开全部
理解有误区,这是一个定义一个结构体,将结构体命名为PRO,typedef是命名语句,也就是说PRO是一个自定义结构体类型名,而不是一个对象,不是变量,sell是变量,是一个PRO类型的数组变量,是一组PRO对象,还有问题可追问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式