#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 關注
- 165 瀏覽
添加回答
舉報
0/150
提交
取消