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

Instrukcje skoku
Słowa kluczowe