C++ goto语句
goto
:跳至标记处继续执行程序
首先来个范例,简单入个门
#include <iostream> using namespace std; int main() { int getInput; do { cin >> getInput; if (getInput % 2 == 1) { cout << "输入的是单数" << endl; goto BREAK; cout << "会从这里接着执行吗?" << endl; } } while ( getInput != 404); BREAK: { cout << "结束" << endl; return 0; } return 0; }
注意!
-
使用
goto
执行完BREAK
代码块中代码后不会返回原来的地方(就是这里👇 )继续执行cout << "会从这里接着执行吗?" << endl;
-
goto
语句的目标代码块也是普通代码,如果没有通过goto进入BREAK代码块,正常走也是会执行目标代码块中内容(不信你运行程序,输入404试试)404 结束
了解了上述2点——基本的概念,没有什么多的了;然后介绍点进阶的
goto目标代码块中可以调用goto
#include <iostream>
using namespace std;
int main() {
int i;
do
{
cout << "请输入" << endl;
cin >> i;
if ( i % 2 == 0)
{
cout << "before OA" << endl;
goto OA;// 前向后跳
cout << "after OA" << endl;//这里不会被执行
}
else
{
cout << "before OM" << endl;
goto OM;
cout << "after OM" << endl;//这一步不会被执行
}
} while (true);
CONTINUE: {
cout << "after CONTINUE" << endl;
return 0;
}
OA: {
cout << "OA before CONTINUE" << endl;
goto CONTINUE;//跳转至CONTINUE
cout << "OA after CONTINUE" << endl;//这里不会被执行
}
OM: {
cout << "OM before CONTINUE" << endl;
goto CONTINUE;//跳转至CONTINUE
cout << "OM after CONTINUE" << endl;//这里不会被执行
}
return 0;
}
请输入
90
before OA
OA before CONTINUE
after CONTINUE
请输入
9
before OM
OM before CONTINUE
after CONTINUE
上述代码中,顺序上CONTINUE
在OA
之前,而执行顺序却从头到尾再到中间;是的!这就是goto语句的“魅力”,导致程序跳跃严重,严重影响后期维护。所以不建议大家在编码中使用goto语句。值得注意的是:有的开发团队是严禁在代码中使用goto语句的!
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/p/16954672.html