C++ goto 语句
goto 语句
goto 语句提供从 goto 语句到同一函数中带标签语句的无条件跳转。
注意 − 强烈建议不要使用 goto 语句,因为它会使程序的控制流难以追踪,从而导致程序难以理解和修改。任何使用 goto 语句的程序都可以重写,使其不再需要 goto 语句。
C++ 中的 goto 语句是一种控制流结构,它允许程序直接跳转到同一函数中的给定语句。goto 语句将控制转移到函数中的给定标签。标签由标识符后跟冒号 (:) 定义。
语法
C++ 中 goto 语句的语法如下 -
goto label; .. . label: statement;
其中,label 是用于标识带标签语句的标识符。
带标签语句是指任何以标识符开头,后跟冒号 (:) 的语句。
流程图
以下流程图展示了 goto 语句 的工作原理 -

示例
以下是示例代码:
#include <iostream> using namespace std; int main () { // 局部变量声明: int a = 10; // 循环执行 LOOP:do { if( a == 15) { // 跳过迭代。 a = a + 1; goto LOOP; } cout << "a 的值: " << a << endl; a = a + 1; } while( a < 20 ); return 0; }
Output
当编译并执行上述代码时,它会产生以下结果 -
a 的值: 10 a 的值: 11 a 的值: 12 a 的值: 13 a 的值: 14 a 的值: 16 a 的值: 17 a 的值: 18 a 的值: 19
goto 的一个好用法是退出深度嵌套的程序。例如,考虑以下代码片段 -
for(...) { for(...) { while(...) { if(...) goto stop; . . . } } } stop: cout << "Error in program.";
删除 goto 语句会强制执行许多额外的测试。简单的 break 语句在这里不起作用,因为它只会导致程序从最内层循环退出。
何时使用 goto?
goto 语句通常被认为不符合现代编程风格,因为它会导致代码变得结构混乱。但是,它在以下情况下可能很有用:
- 跳出深层嵌套循环。
- 处理遗留代码中的错误或异常情况。
示例:跳出嵌套循环
#include <iostream> using namespace std; int main() { for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { if (i == 1 && j == 1) { goto exitLoops; } cout << "i: " << i << ", j: " << j << endl; } } exitLoops: cout << "Exited the nested loops!" << endl; return 0; }
输出
i: 0, j: 0 i: 0, j: 1 i: 0, j: 2 i: 1, j: 0 Exited the nested loops!