為什么會是這個結果。把浮點數寫在字符里面結果是怎樣轉換的。我知道是錯的但我想知道為什么是這個結果?
uj5u.com熱心網友回復:
printf("%x\n", HGE); 你就明白了uj5u.com熱心網友回復:
編譯器把這個宏定義定義成了一個指標,指向這個臨時字串,打出來的是個指標地址uj5u.com熱心網友回復:
c:\MinGW\test>gcc printf.c
printf.c: In function 'main':
printf.c:16:17: warning: multi-character character constant [-Wmultichar]
16 | printf("%d-%d",leg,'0.26');
| ^~~
printf.c:16:21: warning: multi-character character constant [-Wmultichar]
16 | printf("%d-%d",leg,'0.26');
| ^~~~~~
uj5u.com熱心網友回復:
'0.25'不是指標,也不是字串,而是int,在小端架構上,記憶體布局是35 32 2e 30,就是0x302e3235,即808333877(808333887 應該是樓主寫錯了)uj5u.com熱心網友回復:
我前面說錯了一點,這個應該跟大小端架構沒關系,'0.25'是字面值,最左邊是最高位,最右邊是最低位,所以它總是0x302e3235(808333877)uj5u.com熱心網友回復:
記憶體里整型資料和浮點數的表示方法不一樣,因此用%d輸出是以整型資料去決議浮點數,所以出現這樣的結果~轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/14283.html
標籤:C語言
上一篇:運行時出現0x00000000 該記憶體不能為written
下一篇:openssl使用問題
