C++ 两个常数的乘积是否在每次执行时都得到计算?

C++ 两个常数的乘积是否在每次执行时都得到计算?,c++,processing-efficiency,performance,C++,Processing Efficiency,Performance,例如,如果我有: if(x < 2*0.025) { ... } 如果(x

例如,如果我有:

if(x < 2*0.025) { ... } 如果(x<2*0.025){…} 是否每次都计算
2*0.025
?还是将
0.05
代入,以使乘法运算不必每次都运行


换句话说,使用
0.05
而不是
2*0.025
是否更有效?

常量表达式是预计算的。

我知道的每个编译器都实现了,即在编译时计算常量表达式,因此没有区别。然而,本标准并未规定:

常量表达式可以在转换过程中而不是在运行时进行计算,因此可以在常量所在的任何位置使用

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