表达式必须具有算术或无范围枚举类型

问题描述 投票:0回答:1

这是我第一次尝试没有输入的方法。这是代码:

int factorial(int a)
{
    int i = 1, result = 1;

    while (i <= a)
    {
        result = result * i;

        i++;
    }

    return result;
}

int double_factorial(int a)
{
    int i = 2, result = 1;

    while (i <= a)
    {
        result = result * i;

        i = i + 2;
    }

    return result;
}
long double pi()
{
    unsigned long int n = 4294967295;
    unsigned long int i = 0;
    long double result = 0;
    while (i <= n)
    {
        result = result + (factorial(i) / double_factorial(2 * i + 1));

        i++;
    }

    long double pi = result * 2;

    return pi;
}

long double circumference_circle_input_radius(double r)
{
    long double C = 2.0 * pi * r; //error: 'pi' expression must have arithmetic or unscoped enum type.
}

当我尝试在此使用方法“pi”时,出现错误。我不明白这个错误意味着什么,所以很难理解问题并调试它。

c++
1个回答
5
投票

pi
是一个函数,而不是一个变量。要在表达式中调用它,需要使用括号:

long double C = 2.0 * pi() * r;
                        ^^

如果没有括号,编译器会认为您正在尝试将 函数本身乘以 2,这不是一个没有任何意义的操作。

© www.soinside.com 2019 - 2024. All rights reserved.