#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的数值。
如果还不清楚,就看下联合体的概念!~

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"); 是暂停。
还有什么不懂的?
- 3 回答
- 0 关注
- 171 浏览
添加回答
举报
0/150
提交
取消