goto e istruzioni etichettate (C)

L'istruzione goto trasferisce il controllo a un'etichetta. L'etichetta specificata deve risiedere nella stessa funzione e può apparire solo prima di un'istruzione nella stessa funzione.

Sintassi

statement:
labeled-statement
jump-statement

jump-statement:
goto identifier ;

labeled-statement:
identifier : statement

Un'etichetta dell'istruzione è significativa solo a un'istruzione goto; in qualsiasi altro contesto, un'istruzione contrassegnata viene eseguita indipendentemente dall'etichetta.

Un jump-statement deve risiedere nella stessa funzione e può essere visualizzato prima di una sola istruzione nella stessa funzione. Il set di identifier nomi che segue a ha goto uno spazio dei nomi specifico in modo che i nomi non interferiscano con altri identificatori. Le etichette non possono essere ridecredite. Per altre informazioni, vedere Spazi dei nomi.

È un buon stile di programmazione usare l'istruzione break, continuee return in preferenza per goto laddove possibile. Poiché l'istruzione break esce solo da un livello del ciclo, può essere necessario un goto valore per uscire da un ciclo dall'interno di un ciclo annidato in modo approfondito.

In questo esempio viene illustrata l'istruzione 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 );
}

In questo esempio, un'istruzione goto trasferisce il controllo per puntare stop etichettate quando i è uguale a 5.

Vedi anche

Istruzioni