goto
i instrukcje oznaczone etykietami (C)
Instrukcja goto
przenosi kontrolkę do etykiety. Dana etykieta musi znajdować się w tej samej funkcji i może być wyświetlana przed tylko jedną instrukcją w tej samej funkcji.
Składnia
statement
:
labeled-statement
jump-statement
jump-statement
:
goto
identifier
;
labeled-statement
:
identifier
:
statement
Etykieta instrukcji jest zrozumiała tylko dla goto
instrukcji. W każdym innym kontekście instrukcja oznaczona etykietą jest wykonywana bez względu na etykietę.
Element jump-statement
musi znajdować się w tej samej funkcji i może występować przed tylko jedną instrukcją w tej samej funkcji. Zestaw identifier
nazw po obiekcie ma własną goto
przestrzeń nazw, więc nazwy nie zakłócają innych identyfikatorów. Nie można ponownie zadeklarować etykiet. Aby uzyskać więcej informacji, zobacz Przestrzenie nazw.
Dobrym stylem programowania jest użycie instrukcji break
, continue
i return
w preferencjach goto
, gdy tylko jest to możliwe. break
Ponieważ instrukcja kończy działanie tylko z jednego poziomu pętli, goto
może być konieczne wyjście pętli z głęboko zagnieżdżonej pętli.
W tym przykładzie pokazano instrukcję 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 );
}
W tym przykładzie instrukcja przenosi kontrolkę goto
do punktu oznaczonego stop
, gdy i
równa się 5.
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