Udostępnij za pośrednictwem


goto i Labeled — instrukcje (C)

Wyrażenie goto przekazuje sterowanie etykiecie.Podana etykieta musi znajdować się w tej samej funkcji i może pojawić się tylko przed jedną instrukcją w tej samej funkcji.

Składnia

  • statement:
    labeled-statement

    jump-statement

  • jump-statement:
    goto identifier ;

  • labeled-statement:
    identifier : statement

Etykieta wyrażenia jest istotna tylko dla wyrażenia goto; w dowolnym innym kontekście wyrażenie z etykietą jest wykonywane bez względu na etykietę.

Instrukcja skoku musi znajdować się w tej samej funkcji i może pojawić się tylko przed jedną instrukcją w tej samej funkcji.Zestaw nazw identyfikatorów następujących po goto ma własną przestrzeń nazw, więc nazwy nie zakłócają innych identyfikatorów.Etykiety nie mogą być ponownie zadeklarowane.Aby uzyskać więcej informacji, zobacz omówienie przestrzeni nazw.

Dobre praktyki zalecają, aby używać instrukcji break, continue i return niż goto zawsze, gdy jest to możliwe.Ponieważ wyrażenie break kończy działanie tylko jednego poziomu pętli, goto może być niezbędne do kończenia pętli z innej głęboko osadzonej pętli.

Ten przykład ilustruje 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 goto przekazuje kontrolę do punktu oznaczonego etykietą stop, gdy i jest równe 5.

Zobacz też

Koncepcje

Instrukcje (C)