推 Hazukashiine: 是個自信滿滿的孩子呢(抱 08/03 11:40
推 jerryh001: 浮點數和整數儲存格式不一樣 08/03 11:44
→ blueblueChen: 那假設 union 內是個 char 和 int呢? 08/03 11:49
→ blueblueChen: data.a = 'x'; printf("%d\n",data.b); 也是完全不 08/03 11:49
→ blueblueChen: 如預期 08/03 11:50
→ sarafciel: 你的預期是啥XD 08/03 11:52
推 Killercat: 我覺得每個寫C/C++的應該要把IEEE754列為必修.... 08/03 12:01
→ Killercat: IEEE754看一次可以搞懂很多問題 08/03 12:02
→ blueblueChen: 我的預期是 data.b = 120..... 08/03 12:23
推 stupid0319: 計概老師常常請假嗎 08/03 12:29
推 boss0405: 不是120可能是你的char只用到1byte,其他memory是非0, 08/03 13:04
→ boss0405: 你可以把union Data data;換成global variable看看 08/03 13:05
→ blueblueChen: boss ,你的建議非常有用。是不是他宣告為 global 08/03 13:21
→ blueblueChen: 就是在 .bss 區塊,系統會自動初始為0 08/03 13:21
→ sarafciel: 同頁23148那篇有你要的答案 建議看看 08/03 13:33
→ sarafciel: 還是不懂請google IEEE754跟little endian XD 08/03 13:35
推 boss0405: 是的,bss sec要初始成0 08/03 15:27
→ blueblueChen: 謝了..我聽了各位大大的建議去讀了IEEE754都懂了 08/03 15:58
→ blueblueChen: 回到原問題 b=0x0A,用double(8byte)去表示,IEEE 08/03 16:19
→ blueblueChen: 轉換後,用格式化輸出 %f 為 0.000000 08/03 16:20
→ djshen: 你要不要自己算算看那個數有多小 08/03 18:48
推 cutekid: 5e-323 08/03 20:49
推 remember: 讀懂ieee745啊 厲害 08/03 21:04
→ Killercat: 那東西很難懂嗎 = = 不就解釋FLOAT怎麼表示而已 08/06 12:02
→ Killercat: 到是上面有人提到重點 他還有little endian的問題 08/06 12:03
推 alan23273850: 那如果兩個變數都是 int 呢 08/07 17:19
→ alan23273850: 剛剛試了一下,就沒問題了呢 08/07 17:22
推 jerryh001: 兩個都int那union的意義在哪 08/07 21:46
→ sarafciel: 你可以得到一個真正的別名 而不是像reference一樣的假 08/08 12:43
→ sarafciel: 別名真指標 不但省了記憶體空間 而且不用& 抽象更好理 08/08 12:45
→ sarafciel: 解 以上都是我唬爛的 不要當真(逃) 08/08 12:46