C++ goto文
goto文は、制御を無条件に同じ関数内のラベル付き文へ転送することを許可します。
注意:どのプログラミング言語でも、goto文の使用は推奨されません。なぜなら、goto文はプログラムの制御フローを追跡しにくくし、プログラムを理解・修正しにくくするからです。goto文を使用するプログラムは、goto文を必要としない書き方に書き換えることができます。
構文
C++ ではgoto 文の構文:
goto label; .. . label: statement;
ここでは、labelはラベル付き文を識別する識別子であり、C++のキーワード以外の任意のプレーンテキストを使用できます。ラベル付き文は任意の文でよく、識別子とコロン(:)の後に置きます。

フローチャート
例
例
#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;
}
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文の良い使い方の1つは、深くネストされたルーチンから抜け出すことです。たとえば、次のコード断片を見てください。
for(...) {
for(...) {
while(...) {
if(...) goto stop;
.
.
.
}
}
}
stop:
cout << "Error in program.\n";
除去gotoいくつかの追加のテストが実行されることになります。単純なbreak文はここでは役に立ちません。なぜなら、それはプログラムを最も内側のループから抜け出すだけだからです。
その他の拡張
C++ループ