是否在编译时或运行时执行使用编译时常量整数的浮点计算?例如,除法运算的时间是:
template <int A, int B>
inline float fraction()
{
return static_cast<float>(A) / B;
}
最佳答案
我相信它是由实现定义的,但是大多数编译器会在编译时评估常量表达式。但是,即使您没有进行以下修改:
template <int A, int B>
inline float fraction()
{
static const float f = static_cast<float>(A) / B;
return f ;
}
如果表达式在运行时被评估,将至少确保该表达式仅被评估一次。