課程
/后端開發
/C
/C語言入門
和題目一樣
2015-08-28
源自:C語言入門 2-9
正在回答
沒有強制轉換的時候將輸出語句printf內的%d改為%f就會輸出2.5,如果不改直接用%d輸出,那么C語言中無法識別只定義的浮點型而調用的整型,導致出現亂碼,隨機輸出一個數
浮點數在儲存時通常遵循IEEE754標準,即將整數部分和指數部分分別存入不同的位中。不過不同平臺會有不同的實現,不一定都遵循IEEE標準。
printf會將后面的相應參數按照第一個參數中格式化指示符進行解釋,這樣浮點數的二進制表示如果當成是整型的話,就會出現類似“亂碼”的輸出。具體輸出多少跟你的平臺實現有關,在我的64位機器上用gcc編譯,打印出的是0。
我是說不是沒有強制轉換的時候的輸出結果為什么是-1248013944
KingMisy
你那個雙精度如果想轉成整數輸出,就得利用強制轉換,在printf中的num前加(int),成(int)num。
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
2 回答為什么輸出結果是這樣的
2 回答為什么輸出結果是這個?
1 回答這樣輸出結果為什么是0???
4 回答這輸出出來是什么原理?
2 回答為什么輸出結果是4.000000
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-11-10
沒有強制轉換的時候將輸出語句printf內的%d改為%f就會輸出2.5,如果不改直接用%d輸出,那么C語言中無法識別只定義的浮點型而調用的整型,導致出現亂碼,隨機輸出一個數
2015-08-30
浮點數在儲存時通常遵循IEEE754標準,即將整數部分和指數部分分別存入不同的位中。不過不同平臺會有不同的實現,不一定都遵循IEEE標準。
printf會將后面的相應參數按照第一個參數中格式化指示符進行解釋,這樣浮點數的二進制表示如果當成是整型的話,就會出現類似“亂碼”的輸出。具體輸出多少跟你的平臺實現有關,在我的64位機器上用gcc編譯,打印出的是0。
2015-08-28
我是說不是沒有強制轉換的時候的輸出結果為什么是-1248013944
2015-08-28
你那個雙精度如果想轉成整數輸出,就得利用強制轉換,在printf中的num前加(int),成(int)num。