C++ goto 语句
goto 语句提供了在同一函数中从 goto 跳转到带有标记语句的无条件跳转。
注意 − 使用 goto 语句是极不推荐的,因为它使得程序的控制流难以跟踪,使程序难以理解和修改。任何使用 goto 的程序都可以重写,以避免使用 goto。
语法
C++ 中 goto 语句的语法如下所示 −
goto label;
..
.
label: statement;
在这里, label 是一个用于标志语句的标识符。带标签的语句是在标识符后面加上冒号(:)的任意语句。
流程图
示例
#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 语句不起作用,因为它只会导致程序退出最内层的循环。