C语言。答案选的D.可是D哪里错了?

 我来答
与子如初见
2014-02-20 · TA获得超过1638个赞
知道小有建树答主
回答量:1117
采纳率:100%
帮助的人:779万
展开全部
好吧,说那么多,你看不懂。
其实主要原因就是因为浮点型和整型在内存中的存储方式不一样。
整型从低位到高位依次存储,但是浮点型的存储并不是这样的。
所以d是错的。
追问
太深奥了。。。暂时还没学到啊大哥
不过还是谢谢!
百度网友0397a67
2014-02-20 · TA获得超过114个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:98.2万
展开全部
ABC都是正确的,那么就不解释了。
关于D选项,demo.d1赋值99。由于我们已经知道union的特征是内存共用,也就是B选项所描述的,同时float和int都是占4个内存字节数。
在上面的铺垫下,我这样描述:
在计算机中,浮点数的存储和整形数据存储方式是不一样的,浮点数存储方式如一楼回答那般比较复杂,在计算机组成原理课程会学习。他们在内存中的存储规则不一样,如下举例。
整形99换算成16进制在内存储存,其值是 0x 00 00 00 63。
浮点型99.0换算成16进制在内存储存,其值是 0x 42 C6 00 00。
所以可以说,16进制数 0x 00 00 00 63换算成十进制浮点数绝对不是99.0。
至于0x 00 00 00 63换算成十进制浮点数是什么我也没有计算过,主要是我不记得了,我用编译器输出的结果是0.000000。我觉得也不需要纠结这个了。
还有疑问再追问吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
psxf91
2014-02-20 · TA获得超过428个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:477万
展开全部
选d,因为int和float的占用大小是一样的,但是存的方式不一样,于是共同体用int存再用float取的话,值是一个按整形存的0和1的值,按浮点取,因为两种类型的机制不一样,所以一般取不出99.0,而是一个系统机制决定的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
擎天0302
2014-02-20 · TA获得超过112个赞
知道答主
回答量:137
采纳率:100%
帮助的人:57.8万
展开全部
demo.d2没有赋值它的值未知,而D选项说demo.2的值是99.0
还有其他疑问吗?
追问
没有了。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lee_root
2014-02-20 · 超过21用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:37.9万
展开全部
什么是union你还不清楚。用sizeof()就知道原因了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式