为了账号安全,请及时绑定邮箱和手机立即绑定

为什么最后输出会是 8d 97 6e 12 83 c0 f3 3f?

为什么最后输出会是 8d 97 6e 12 83 c0 f3 3f?

C++
慕娘9325324 2022-05-12 13:11:41
#include<stdio.h>#include<stdlib.h>#define D_CHAR union double_char\{ \double d; \unsigned char byte[8];\}void shuchu(unsigned char[],int);int main(void){D_CHAR u;u.d=1.2345;shuchu(u.byte,sizeof(u.byte)/sizeof(u.byte[0]));system("pause");return 0;}void shuchu(unsigned char byte[],int n){int i;for(i=0;i<n;i++){printf("%02x\n",byte[i]);}putchar('\n');}完全不懂表达的是什么意思,为什么最后输出会是8d976e1283c0f33f谁能跟我说下怎么实现的?
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

联合体内存就是成员里最大的类型值的大小。
很显然这个联合体里 double是最大的,占8个字节,所以这个联合体就是8字节大小。
把double变量=1.2345;,然后输出的就是这个联合体内存里存储16进制数值,也就是这个1.2345的数值。
如果还不清楚,就看下联合体的概念!~

查看完整回答
反对 回复 2022-05-16
?
MM们

TA贡献1886条经验 获得超2个赞

哪里不懂了?输出的就是
u.d=1.2345;

内存中就是 8d 97 6e 12 83 c0 f3 3f。
你要输出其他的 就赋其他的值。
void shuchu(unsigned char byte[],int n)这个就是把你刚才字段的每个字节数输出来。

system("pause"); 是暂停。
还有什么不懂的?

查看完整回答
反对 回复 2022-05-16
?
浮云间

TA贡献1829条经验 获得超4个赞

最后输出的是双精度数1.2345的8位字节表示,其具体的表示方法定义在IEEE里,你只需要知道union的原理就行了,其实用int来做例子就好解释了。

查看完整回答
反对 回复 2022-05-16
  • 3 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号