PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 關於 C 的 union
作者:
blueblueChen
(藍藍欠)
2018-08-03 11:37:00
union Data {
int b;
double c;
};
union Data data;
data.b = 10;
printf("%f\n",data.c);
看完了別人的部落格,覺得自信滿滿懂了 union
自己測試後,跟預期的答案不一樣...自己還是完全不懂
我預期是 10.000000
b c共用記憶體,操作 data.b = 10 後,data.c 完全可以存下10,顯示出來應該是
10.000000阿...
謝謝
作者:
Hazukashiine
(私は幸せです)
2018-08-03 11:40:00
是個自信滿滿的孩子呢(抱
作者: jerryh001
2018-08-03 11:44:00
浮點數和整數儲存格式不一樣
作者:
blueblueChen
(藍藍欠)
2018-08-03 11:49:00
那假設 union 內是個 char 和 int呢?data.a = 'x'; printf("%d\n",data.b); 也是完全不如預期
作者:
sarafciel
(Cattuz)
2018-08-03 11:52:00
你的預期是啥XD
作者:
Killercat
(殺人貓™)
2018-08-03 12:01:00
我覺得每個寫C/C++的應該要把IEEE754列為必修....IEEE754看一次可以搞懂很多問題
作者:
blueblueChen
(藍藍欠)
2018-08-03 12:23:00
我的預期是 data.b = 120.....
作者:
stupid0319
(徵女友)
2018-08-03 12:29:00
計概老師常常請假嗎
作者:
boss0405
(boss)
2018-08-03 13:04:00
不是120可能是你的char只用到1byte,其他memory是非0,你可以把union Data data;換成global variable看看
作者:
blueblueChen
(藍藍欠)
2018-08-03 13:21:00
boss ,你的建議非常有用。是不是他宣告為 global就是在 .bss 區塊,系統會自動初始為0
作者:
sarafciel
(Cattuz)
2018-08-03 13:33:00
同頁23148那篇有你要的答案 建議看看還是不懂請google IEEE754跟little endian XD
作者:
boss0405
(boss)
2018-08-03 15:27:00
是的,bss sec要初始成0
作者:
blueblueChen
(藍藍欠)
2018-08-03 15:58:00
謝了..我聽了各位大大的建議去讀了IEEE754都懂了回到原問題 b=0x0A,用double(8byte)去表示,IEEE轉換後,用格式化輸出 %f 為 0.000000
作者:
djshen
(djshen)
2018-08-03 18:48:00
你要不要自己算算看那個數有多小
作者:
cutekid
(可愛小孩子)
2018-08-03 20:49:00
5e-323
作者:
remember
(人老也有天使收)
2018-08-03 21:04:00
讀懂ieee745啊 厲害
作者:
Killercat
(殺人貓™)
2018-08-06 12:02:00
那東西很難懂嗎 = = 不就解釋FLOAT怎麼表示而已到是上面有人提到重點 他還有little endian的問題
作者:
alan23273850
2018-08-07 17:19:00
那如果兩個變數都是 int 呢剛剛試了一下,就沒問題了呢
作者: jerryh001
2018-08-07 21:46:00
兩個都int那union的意義在哪
作者:
sarafciel
(Cattuz)
2018-08-08 12:43:00
你可以得到一個真正的別名 而不是像reference一樣的假別名真指標 不但省了記憶體空間 而且不用& 抽象更好理解 以上都是我唬爛的 不要當真(逃)
繼續閱讀
Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?
PkmX
Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?
Schottky
Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?
Schottky
Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?
yoco
Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?
yoco
Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?
yoco
[問題] 二進制檔案處理的讀寫函數疑問
a2334436
Re: [問題] 九九乘法表不用迴圈是叫我直接從1列到81?
Schottky
[問題] 求比較漂亮的寫法
d630200x
Re: [問題] 抱歉 再詢問一次 c++強制轉換
djshen
Links
booklink
Contact Us: admin [ a t ] ucptt.com