Re: 關於c++的輸出問題

作者: djshen (djshen)   2019-06-28 23:37:19
※ 引述《ac01965159 (leeleo)》之銘言:
: 標題: 關於c++的輸出問題
: 時間: Thu Jun 27 10:49:32 2019
:
: https://i.imgur.com/Qmnd7YW.jpg
: 上圖是我的測試,上網查過資料後,我的認知是編譯器在即將把float格式輸出前,會先
: 轉成double的格式,而%d會取低32bit的值轉10進制再拿去輸出,我把我的輸出值0.5手
: 動轉成double後,發現取低32bit的輸出應是0才對,但是結果如圖卻不是,所以想請教
: 各位是我哪裡理解錯了嗎?
: 謝謝。
:
:
:
作者: LPH66 (-6.2598534e+18f)   2019-06-29 00:18:00
問題就在於 amd64 ABI 會要求一些能放暫存器的參數要放過去這裡只有一個指標和一個浮點數, 應該是夠用的但 MSVC 不知為什麼依然全部丟堆疊我是猜測不知道哪裡的設定不一樣使得 MSVC 做這樣設定話說剛剛突然想到一個可能原因: 或許 MSVC 的預設設定是編出 32-bit 程式, 所以才是使用堆疊
作者: djshen (djshen)   2019-06-29 00:36:00
看起來應該是這樣 compiler改成x64 msvc就會用register了
作者: wei115 (ㄎㄎ)   2019-06-29 02:12:00
話說在msys2上的gcc跑也會是0,用-m64(-m32錯誤)照上面的思路,gcc應該也是把東西都堆疊(就算x64)那gcc為什麼沒把東西都register?都->丟
作者: ac01965159 (leeleo)   2019-07-01 14:52:00
感謝大大的解惑。

Links booklink

Contact Us: admin [ a t ] ucptt.com