C++ goto 语句


goto 语句允许把控制无条件转移到同一函数内的被标记的语句。

注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

语法

C++ 中 goto 语句的语法:

  1. goto label;
  2. ..
  3. .
  4. label: statement;

在这里,label 是识别被标记语句的标识符,可以是任何除 C++ 关键字以外的纯文本。标记语句可以是任何语句,放置在标识符和冒号(:)后边。

流程图

C++ goto 语句

实例

  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5. // 局部变量声明
  6. int a = 10;
  7.  
  8. // do 循环执行
  9. LOOP:do
  10. {
  11. if( a == 15)
  12. {
  13. // 跳过迭代
  14. a = a + 1;
  15. goto LOOP;
  16. }
  17. cout << "a 的值:" << a << endl;
  18. a = a + 1;
  19. }while( a < 20 );
  20. return 0;
  21. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. a 的值: 10
  2. a 的值: 11
  3. a 的值: 12
  4. a 的值: 13
  5. a 的值: 14
  6. a 的值: 16
  7. a 的值: 17
  8. a 的值: 18
  9. a 的值: 19

goto 语句一个很好的作用是退出深嵌套例程。例如,请看下面的代码片段:

  1. for(...) {
  2. for(...) {
  3. while(...) {
  4. if(...) goto stop;
  5. .
  6. .
  7. .
  8. }
  9. }
  10. }
  11. stop:
  12. cout << "Error in program.\n";

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