关键字 goto用于控制程式执行的顺序,使程式直接跳到指定标签(lable) 的地方继续执行。
形式如下
标签可以是任意的识别字,后面接一个冒号。
举例如下
#include <iostream>
int main() {
goto label_one;
label_one:
{
std::cout << "Label One" << std::endl;
goto label_two;
}
label_two:
{
std::cout << "Label Two" << std::endl;
goto label_three;
}
label_three:
{
std::cout << "Label Three" << std::endl;
}
return 0;
}
编译后执行,结果如下
$ g++ u0509_1.cpp
$./a.out 复制代码
标签一
标签二
标签三
$
此例按标签的顺序,在每个标签下方都用大括弧围住一个程式区块,goto到了指定标签,就会执行标签下方的程式区块
label_one:
{
std::cout << "Label One" << std::endl;
goto label_two;
}
概念满简单的,上面利用标签顺序执行,下面我们另举一个例子,使goto具有回圈的效果
#include <iostream>
int main() {
int i = 1;
if (i < 10) {
goto label_one;
}
label_one:
{
std::cout << "Label One" << std::endl;
goto label_three;
}
label_two:
{
std::cout << "Label Two" << std::endl;
}
label_three:
{
std::cout << "Label Three" << std::endl;
i++;
if (i < 10) {
goto label_two;
}
}
return 0;
}
编译后执行,结果如下
$ g++ u0509_2.cpp
$./a.out 复制代码
标签一
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
$