(C) Goto とラベル付きステートメント
ラベルに goto ステートメントの制御を移します。特定のラベルは同じ関数に存在し同じ関数の 1 種類のステートメントのみの前に指定できます。
構文
: ステートメント
ラベル付きステートメントジャンプ ステートメント
ジャンプ ステートメント :
goto の 識別子 ;ラベル付きステートメント :
識別子の : の ステートメント
ステートメント ラベルは goto のステートメントのみ有効です ; 他のコンテキストではラベル付きステートメントはに関係なく実行されます。
ジャンプ ステートメント が同じ関数に存在し同じ関数の 1 種類のステートメントのみの前に指定できます。goto のすぐ後に 識別子名 の設定に独自の名前空間がこの名前は他の識別子で干渉することはありません。ラベルは再宣言できません。詳細については名前空間 を参照してください。
にはgoto にユーザー設定で 中断 continue と return のステートメントを使用するようにプログラミング スタイルを支援します。 中断 のステートメントがループの 1 レベルのみ終了するためgoto は入れ子のループから内側のループを終了する場合に必要となる場合があります。
この例では goto のステートメントの一覧です :
// goto.c
#include <stdio.h>
int main()
{
int i, j;
for ( i = 0; i < 10; i++ )
{
printf_s( "Outer loop executing. i = %d\n", i );
for ( j = 0; j < 3; j++ )
{
printf_s( " Inner loop executing. j = %d\n", j );
if ( i == 5 )
goto stop;
}
}
/* This message does not print: */
printf_s( "Loop exited. i = %d\n", i );
stop: printf_s( "Jumped to stop. i = %d\n", i );
}
この例ではの goto のステートメントに渡しstop と i のラベル (5。