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, continuei 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ż

Instrukcje