C语言。答案选的D.可是D哪里错了?
6个回答
展开全部
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。我觉得也不需要纠结这个了。
还有疑问再追问吧
关于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。我觉得也不需要纠结这个了。
还有疑问再追问吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选d,因为int和float的占用大小是一样的,但是存的方式不一样,于是共同体用int存再用float取的话,值是一个按整形存的0和1的值,按浮点取,因为两种类型的机制不一样,所以一般取不出99.0,而是一个系统机制决定的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
demo.d2没有赋值它的值未知,而D选项说demo.2的值是99.0
还有其他疑问吗?
还有其他疑问吗?
追问
没有了。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么是union你还不清楚。用sizeof()就知道原因了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询