企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# C++ goto 语句 **goto** 语句允许把控制无条件转移到同一函数内的被标记的语句。 **注意:**在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。 ### 语法 C++ 中 **goto** 语句的语法: ~~~ goto label; .. . label: statement; ~~~ 在这里,**label** 是识别被标记语句的标识符,可以是任何除 C++ 关键字以外的纯文本。标记语句可以是任何语句,放置在标识符和冒号(:)后边。 ### 流程图 ![C++ goto 语句](https://box.kancloud.cn/2015-12-14_566e60d936a74.jpg) ### 实例 ~~~ #include <iostream> using namespace std; int main () { // 局部变量声明 int a = 10; // do 循环执行 LOOP:do { if( a == 15) { // 跳过迭代 a = a + 1; goto LOOP; } cout << "a 的值:" << a << endl; a = a + 1; }while( a < 20 ); return 0; } ~~~ 当上面的代码被编译和执行时,它会产生下列结果: ~~~ 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.\n"; ~~~ 消除 **goto** 会导致一些额外的测试被执行。一个简单的 **break** 语句在这里不会起到作用,因为它只会使程序退出最内层循环。