1-10-7. goto文

公開日: 23:42 1. 基本編/1-10. ループ文/1-10-7. goto文


goto文を使うとgoto文から同じ関数内のラベルをはられた構文ヘ無条件ジャンプができます。

注意:goto文の利用はプログラムの制御の流れを追うのが難しくなり、プログラムの理解をを困難にし変更しにくくなるため、推奨されていません。goto文を使ったプログラムはgoto文を使わずに書きなおすことができます。

ラベルのある場所はラベルが貼られた構文を示す識別子です。ラベルが貼られた構文は識別子の後ろにコロン(:)が付きます。

使用例

#include <iostream>
using namespace std;
 
int main ()
{
   // ローカル変数の宣言
   int a = 10;

   // do...while文の実行
   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 << "プログラムエラー\n";

goto文を排除するためには、実行される評価の数が増えてしまいます。break文は最も内側のループを抜けるだけなのでここではうまく動作しません。
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿