C++ // 并非所有控制路径都返回值

C++ // Not all control paths return a value

本文关键字:路径 返回值 控制 C++      更新时间:2023-10-16
int bounce(int n) {
    if (n == 0)
    {
        cout << "0" << endl;
    }
    if (n > 0)
    {
        cout << n << endl;
        bounce(n - 1);
        cout << n << endl;
    }
}
int main() 
{
    int x;
    cout << "Choose a number: ";
    cin >> x;
    cout << bounce(x) << endl;
    system("pause");
    return 0;
}

我最近第一次开始使用 C++(大约 2 小时前:D(,我遇到的问题是"反弹:并非所有控制路径都返回值",我不知道如何解决这个问题,显然我需要返回 0; 或函数中的某个地方,但我无法在不破坏它的工作方式的情况下找到位置。
示例 : bounce(5( ==> 打印出 5 4 3 2 1 0 1 2 3 4 5
TL DR:将返回放在反弹的位置以使其正常工作。

实际上,您的任何控件路径都不返回值。由于您仅使用该函数在屏幕上打印某些内容,因此它不必返回任何内容。只需使返回类型无效:

void bounce(int n) {
    /*...*/
}

然后不要cout函数调用的结果(一旦你做到了void函数无论如何都不会返回任何内容(,即代替:

std::cout << bounce(x) << std::endl;

只需写

bounce(x);

您已经在函数内的屏幕上打印。

在 C++ 中定义函数时,请在函数名称之前指定返回类型。

您的 int bounce() 函数被声明为返回一个整数,但它根本不返回任何值。因此,这会导致错误。

您可以使用 void bounce() 声明函数,这会告诉编译器您的函数不会返回任何值。这将消除错误。

注意:尽管您使用cout来显示值,但这不同于以我们正在讨论的方式返回值。返回值是使用 return 关键字指定的。