goto ステートメント (C++)
goto
ステートメントは、指定した識別子によってラベル付けされたステートメントに制御を移します。
構文
goto identifier;
解説
identifier
で指定されたラベル付きステートメントは、現在の関数内にある必要があります。 すべての identifier
名は内部の名前空間のメンバーであるため、他の識別子と干渉することはありません。
ステートメント ラベルは goto
ステートメントに対してのみ意味があります。その他の場合、ステートメント ラベルは無視されます。 ラベルは再宣言できません。
goto
ステートメントでは、その場所のスコープ内にある変数の初期化をスキップする場所に制御を移すことは許可されていません。 次の例では、C2362 が発生します。
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
可能な限り、goto
ステートメントより break
、continue
、および return
ステートメントを使用することをお勧めします。 ただし、break
ステートメントはループの 1 つのレベルのみを終了するため、深い入れ子のループを終了するには goto
ステートメントを使用する必要がある場合もあります。
ラベルと goto
ステートメントの詳細については、「ラベル付きステートメント」を参照してください。
例
この例で goto
ステートメントは、i
が 3 に等しい場合に、stop
というラベルの位置に制御を移します。
// goto_statement.cpp
#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 < 2; j++ )
{
printf_s( " Inner loop executing. j = %d\n", j );
if ( i == 3 )
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 );
}
Outer loop executing. i = 0
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 1
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 2
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 3
Inner loop executing. j = 0
Jumped to stop. i = 3
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示