goto — instrukcja (C++)
Instrukcja goto
bezwarunkowo przenosi kontrolę do instrukcji oznaczonej przez określony identyfikator.
Składnia
goto identifier;
Uwagi
Instrukcja oznaczona identifier
etykietą musi znajdować się w bieżącej funkcji. Wszystkie identifier
nazwy są elementami członkowskimi wewnętrznej przestrzeni nazw i dlatego nie zakłócają innych identyfikatorów.
Etykieta instrukcji ma znaczenie tylko dla goto
instrukcji; w przeciwnym razie etykiety instrukcji są ignorowane. Nie można ponownie deklarować etykiet.
Instrukcja goto
nie może przenosić kontrolki do lokalizacji, która pomija inicjowanie dowolnej zmiennej, która znajduje się w zakresie w tej lokalizacji. Poniższy przykład zgłasza błąd C2362:
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
Dobrym stylem programowania jest użycie instrukcji break
, continue
i return
zamiast instrukcji goto
, gdy jest to możliwe. Jednak ponieważ break
instrukcja kończy działanie tylko z jednego poziomu pętli, może być konieczne użycie goto
instrukcji w celu zakończenia głęboko zagnieżdżonej pętli.
Aby uzyskać więcej informacji na temat etykiet i instrukcji goto
, zobacz Instrukcje z etykietami.
Przykład
W tym przykładzie instrukcja przenosi kontrolkę goto
do punktu oznaczonego stop
etykietą , gdy i
równa się 3.
// 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
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla