C++ goto 语句



goto 语句提供从 goto 到同一函数中带标签语句的无条件跳转。

注意 - 强烈建议不要使用 goto 语句,因为它使得难以跟踪程序的控制流程,从而使程序难以理解和修改。任何使用 goto 的程序都可以重写,使其不需要 goto。

语法

C++ 中 goto 语句的语法如下:

goto label;
..
.
label: statement;

其中 label 是一个标识符,用于标识带标签的语句。带标签的语句是任何以标识符后跟冒号 (:) 开头的语句。

流程图

C++ goto statement

示例

#include <iostream>
using namespace std;
 
int main () {
   // Local variable declaration:
   int a = 10;

   // do loop execution
   LOOP:do {
      if( a == 15) {
         // skip the iteration.
         a = a + 1;
         goto LOOP;
      }
      cout << "value of a: " << a << endl;
      a = a + 1;
   } 
   while( a < 20 );
 
   return 0;
}

当以上代码被编译和执行时,会产生以下结果:

value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19

goto 的一个好的用途是从深度嵌套的例程中退出。例如,考虑以下代码片段:

for(...) {
   for(...) {
      while(...) {
         if(...) goto stop;
         .
         .
         .
      }
   }
}
stop:
cout << "Error in program.\n";

消除 goto 将迫使执行许多额外的测试。简单的 break 语句在这里不起作用,因为它只会导致程序退出最内层循环。

广告