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