goto 文

goto 文 を使用すると、プログラムは、goto 文で 指定されたラベルに関連付けられたステートメントに無条件に制御を移します。

goto 文の形式は、次のとおりです。

>>-goto--label_identifier--;-----------------------------------><
 
 

goto 文は、通常の処理シーケンスを妨げる可能性があるため、これを使用すると、 プログラムの読み取りおよび保守が難しくなります。多くの場合、break ステートメント 、continue ステートメント、または関数呼び出しを使えば、goto 文を 使用しなくてもすみます。

goto 文を使用してアクティブ・ブロックを終了する場合、 そのブロックから制御が移動するときに、すべてのローカル変数は破棄されます。

goto 文を使用して、初期化を飛び越えることはできません。

C goto 文は、可変長配列の スコープ内にジャンプすることができますが、可変的に変更される型を持つオブジェクトの宣言を飛 び越えて ジャンプすることはできません。

goto 文の例

以下の例は、ネストされたループからジャンプするために使用される goto 文を示しています。 この関数は、goto 文を使用しなくても作成することができます。

/**
 ** This example shows a goto statement that is used to
 ** jump out of a nested loop.
 **/
 
#include <stdio.h>
void display(int matrix[3][3]);
 
int main(void)
{
   int matrix[3][3]=    {1,2,3,4,5,2,8,9,10};
   display(matrix);
   return(0);
}
 
void display(int matrix[3][3])
{
   int i, j;
 
   for (i = 0; i < 3; i++)
      for (j = 0; j < 3; j++)
      {
         if ( (matrix[i][j] < 1) || (matrix[i][j] > 6) )
            goto out_of_bounds;
         printf("matrix[%d][%d] = %d¥n", i, j, matrix[i][j]);
      }
   return;
   out_of_bounds: printf("number must be 1 through 6¥n");
}

関連参照

IBM Copyright 2003