goto-Anweisung (C++)
Die goto
Anweisung überträgt die Kontrolle bedingungslos an die durch den angegebenen Bezeichner bezeichnete Anweisung.
Syntax
goto identifier;
Hinweise
Die bezeichnete Anweisung, die durch identifier
angegeben wird, muss sich in der aktuellen Funktion befinden. Alle identifier
-Namen sind Member eines internen Namespace und beeinträchtigen daher andere Bezeichner nicht.
Eine Anweisungsbezeichnung ist nur für eine goto
Anweisung aussagekräftig. Andernfalls werden Anweisungsbeschriftungen ignoriert. Bezeichnungen können nicht erneut deklariert werden.
Eine goto
Anweisung darf keine Steuerung an einen Speicherort übertragen, der die Initialisierung einer Variablen überspringt, die sich in diesem Bereich befindet. Im folgenden Beispiel wird C2362 ausgelöst:
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
Es ist ein guter Programmierstil, wenn möglich die break
Anweisung und continue
return
die Anweisungen anstelle der goto
Anweisung zu verwenden. Da die break
Anweisung jedoch von nur einer Ebene einer Schleife beendet wird, müssen Sie möglicherweise eine goto
Anweisung verwenden, um eine tief geschachtelte Schleife zu beenden.
Weitere Informationen zu Bezeichnungen und der goto
Anweisung finden Sie unter Labeled-Anweisungen.
Beispiel
In diesem Beispiel überträgt eine goto
Anweisung das Steuerelement an den Punkt, der mit 3 gekennzeichnet ist stop
i
.
// 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
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für