在运行时计算的 C++ 常量变量?

lpp*_*ier 1 c++

在以下代码中,const 变量 B、C 和 P 是在应用程序启动期间还是在运行时(即每次调用 parabolicSine 时)计算一次?

优化这一点,想知道如果我预先计算了 B、C 和 P 是否会有所不同。(以避免除法)

谢谢。

const double B = 4.0/(float)pi;
const double C = -4.0/((float)pi*(float)pi);
const double P = 0.225;

inline double parabolicSine(double x, bool bHighPrecision = true)
{
    double y = B * x + C * x * fabs(x);

    if(bHighPrecision)
        y = P * (y * fabs(y) - y) + y;   

    return y;
}
Run Code Online (Sandbox Code Playgroud)

Pra*_*han 5

const即使变量的定义允许,也不需要在编译时计算变量。虽然大多数编译器可能会在这种微不足道的情况下实现它,但要求它完成的唯一方法是使变量 a constexprconstexpr常量表达式的定义推广到变量和函数。此外,它使您不必担心编译器的怪癖,而是明确表示变量值应该在编译时可用。