C++ goto 语句

在本文中,您将了解 goto 语句、它是如何工作的以及为什么不应该使用 goto。

在 C++ 编程中,goto 语句用于通过将控制转移到程序的其他部分来改变程序执行的顺序。

goto 语句的语法

// 语句

goto label;

// 语句

label: // 这里是 goto 要跳转到的地方
// 语句

在上面的语法中, label 是一个标识符。当遇到 goto label; 时,程序的控制跳转到 label:, 并执行 label: 下面的代码。

在 C++ 编程中使用 goto 语句
在 C++ goto 语句的处理流程图

C++ goto 语句示例

这个程序计算用户输入的数字的平均数。如果用户输入了一个负数,程序会忽略这个负数,并计算之前输入的所有数字的平均数。

# include <iostream>
using namespace std;

int main()
{
    float num, average, sum = 0.0;
    int i, n;

    cout << "Maximum number of inputs: ";
    cin >> n;

    for(i = 1; i <= n; ++i)
    {
        cout << "Enter n" << i << ": ";
        cin >> num;

        if(num < 0.0)
        {
           // Control of the program move to jump:
            goto jump;
        }
        sum += num;
    }

jump:
    average = sum / (i - 1);
    cout << "\nAverage = " << average;
    return 0;
}
输出
Maximum number of inputs: 10
Enter n1: 2.3
Enter n2: 5.6
Enter n3: -5.6

Average = 3.95

请注意其中的语句:

if(num < 0.0)
{
    goto jump;
}

这意味着当用户输入一个负数的时候,代码执行权就跳转到了 jump 程序段。开始计算平均数并输出。

避免 goto 语句

goto 语句赋予了跳转到程序任何部分的能力,但会使程序的逻辑变得复杂和混乱。

在现代编程中,goto 语句被认为是有害的结构和糟糕的编程实践。

大多数 C++ 程序中的 goto 语句可以用 breakcontinue 语句代替。

总结

goto 语句是强大的,但是很容易引入问题并使代码不可控。

您可以在不使用 goto 语句的情况下编写任何 C++ 程序。现代编程已经不鼓励使用 goto 语句。很多其他语言已经摒弃了 goto 语句。