亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么最后輸出會是 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 關注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號