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. ";
省去了转到将迫使要执行多个附加测试。一个简单的break语句也不会工作,因为这只会导致程序从最里面的循环退出。