Cplusplus-cpp-goto-statement

提供:Dev Guides
移動先:案内検索

C ++ gotoステートメント

*goto* ステートメントは、同じ関数内のgotoからラベル付きステートメントへの無条件ジャンプを提供します。

- goto ステートメントの使用は、プログラムの制御フローを追跡することが難しくなり、プログラムを理解しにくく、変更しにくくなるため、使用しないことを強くお勧めします。 gotoを使用するプログラムは、gotoを必要としないように書き換えることができます。

構文

C ++でのgotoステートメントの構文は次のとおりです-

goto label;
..
.
label: statement;
*label* は、ラベル付きステートメントを識別する識別子です。 ラベル付きステートメントは、識別子の後にコロン(:)が続くステートメントです。

流れ図

C ++ gotoステートメント

#include <iostream>
using namespace std;

int main () {
  //Local variable declaration:
   int a = 10;

  //do loop execution
   LOOP:do {
      if( a == 15) {
        //skip the iteration.
         a = a + 1;
         goto LOOP;
      }
      cout << "value of a: " << a << endl;
      a = a + 1;
   }
   while( a < 20 );

   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19

gotoの良い使用法の1つは、深くネストされたルーチンを終了することです。 たとえば、次のコードフラグメントを考慮してください-

for(...) {
   for(...) {
      while(...) {
         if(...) goto stop;
         .
         .
         .
      }
   }
}
stop:
cout << "Error in program.\n";
*goto* を削除すると、多数の追加テストが強制的に実行されます。 単純な *break* ステートメントは、プログラムを最も内側のループから終了させるだけなので、ここでは機能しません。