1. ホーム
  2. enums

[解決済み] 式は、算術式またはスコープされていない enum 型でなければなりません。

2022-02-06 23:13:26

質問

入力なしのメソッドに初挑戦です。以下はそのコードです。

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"を使おうとすると、エラーが発生しました。このエラーの意味がよくわからないので、問題の把握とデバッグが大変です。

どうすればいいですか?

pi は関数であり、変数ではありません。式の中で呼び出すには、括弧を使用する必要があります。

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

括弧がない場合、コンパイラは次のような乗算をしようとしていると判断します。 関数そのもの を2で割ったもので、これは何の意味もない操作です。