C++ 速查手冊
5.9 - goto 陳述
關鍵字 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;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0509_1.cpp
功能:示範 C++ 的 goto 陳述
作者:張凱慶*/
編譯後執行,結果如下
$ g++ u0509_1.cpp |
$ ./a.out |
Label One |
Label Two |
Label Three |
$ |
此例按標籤的順序,在每個標籤下方都用大括弧圍住一個程式區塊, 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;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0509_2.cpp
功能:示範 C++ 的 goto 陳述
作者:張凱慶*/
編譯後執行,結果如下
$ g++ u0509_2.cpp |
$ ./a.out |
Label One |
Label Three |
Label Two |
Label Three |
Label Two |
Label Three |
Label Two |
Label Three |
Label Two |
Label Three |
Label Two |
Label Three |
Label Two |
Label Three |
Label Two |
Label Three |
Label Two |
Label Three |
$ |