编译器优化双函数调用

时间:2016-12-12 12:58:26

标签: c++ c compiler-optimization

在以下功能中:

long power(int x, int n)
{
    if (n == 0)
           return 1;
    if (n % 2 == 0)
           return power(x, n/2) * power(x, n/2);
    return x * power(x, n-1);
}

这当然应该用不同的方式写成,如下:

long power(int x, int n)
{
    if (n == 0)
           return 1;
    if (n % 2 == 0) {
           long res = power(x, n/2);
           return res * res;
    }
    return x * power(x, n-1);
}

然而,像gcc这样的好编译器是否能够识别输出功率函数仅依赖于它的参数,优化双函数调用? 如果没有,编译器删除' double'的近似边界在哪里?码?

0 个答案:

没有答案
相关问题