关键字 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 复制代码
标签一
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
标签二
标签三
$