每次执行时都会计算两个常量的乘积吗?

发布于 2025-01-07 07:38:09 字数 195 浏览 1 评论 0原文

例如,如果我有:

if(x < 2*0.025) { ... }

每次都会计算 2*0.025 吗?或者是否替换为 0.05 以便不必每次都运行乘法运算?

换句话说,使用0.05而不是2*0.025效率更高吗?

For example, if I have:

if(x < 2*0.025) { ... }

Does the 2*0.025 get computed every time? Or does a 0.05 get substituted in so that the multiplication operation doesn't have to run every time?

In other words, is it more efficient to use 0.05 instead of 2*0.025?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄与心 2025-01-14 07:38:10

我知道的每个编译器都实现常量折叠,即在编译时计算常量表达式时间,所以没有区别。然而,该标准并未强制要求:

常量表达式可以在翻译过程中而不是运行时进行计算,因此可以在常量所在的任何地方使用。

您可以使用某些编译器显式禁用此优化。例如,-frounding-math 禁用 gcc 中浮点表达式的常量折叠。

Every compiler I know implements constant folding, i.e. calculates constant expressions at compile time, so there is no difference. The standard, however, does not mandate it:

A constant expression can be evaluated during translation rather than runtime, and accordingly may be used in any place that a constant may be.

You can explicitly disable this optimization with some compilers. For example, -frounding-math disables constant folding for floating point expressions in gcc.

时常饿 2025-01-14 07:38:10

常量表达式是预先计算的。

Constant expressions are precomputed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文