假期快结束了,有个 C++难题,看看多少人会。
<p>如图所示</p>
<p><img alt="" class="embedded_image" loading="lazy" referrerpolicy="no-referrer" rel="noreferrer" src="https://i.imgur.com/2NETFV6.jpg"></p>
<ul>
<li> <p>一般怎么实现 23 行里 FORCE_EVAL ,这种避免编译器优化的语句;空语句 x+toint 的用意何在?</p> </li>
<li> <p>24 行,为什么要写 return 0 * u.f ,而不写成 return 0 ;</p> </li>
<li> <p>26 行,为什么要写成 y = x + toint - toint - x; 而不写成 y = (x - x) + (toint - toint);</p> </li>
</ul>
<p><a href="https://github.com/bminor/musl/blob/master/src/math/roundf.c" rel="nofollow">github 完整源代码</a></p>
收藏(0)
分享
相关标签:
注意:本文归作者所有,未经作者允许,不得转载
-
2023年1月27日 10:26
不知道,但是我知道这是 C
0
0
-
2023年1月27日 10:26
哈哈,有道理,可惜主题已经不能编辑了。
0
0
-
2023年1月27日 10:26
应该是浮点误差相关的优化(但我用不上)
0
0
-
2023年1月27日 11:28
超出了我能力范畴。。。
0
0
-
2023年1月27日 11:57
看下反汇编,一切都知道了
0
0
-
2023年1月27日 16:28
和浮点数编码相关吧,很少用
0
0