C ++のgoto文
goto文は、同じ関数内でラベル付き文に無条件に制御することができます。
注:任意のプログラミング言語では、goto文の使用はお勧めしません。それが困難なプログラムが理解することは困難と変更することは困難で作る、プログラムの制御フローを追跡することを可能にするため。 言葉遣いはgoto文の使用を必要としないとしてのgoto文を使用するすべてのプログラムを書き換えることができます。
文法
C ++構文でgoto文:
goto label; .. . label: statement;
ここでは、ラベルが認識されている識別子ラベル付き文は、プレーンテキストで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; }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
a 的值: 10 a 的值: 11 a 的值: 12 a 的值: 13 a 的值: 14 a 的值: 16 a 的值: 17 a 的值: 18 a 的值: 19
goto文は、良い役割が深くネストされたルーチンを終了することです。 たとえば、次のコードを考えてみます。
for(...) { for(...) { while(...) { if(...) goto stop; . . . } } } stop: cout << "Error in program.\n";
goto文の除去が行われ、いくつかの追加のテストにつながります。それは最も内側のループを終了するプログラムの原因となるため、ここで簡単なbreak文は、役割を果たしていません。