Istruzioni goto e con etichetta (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-statementjump-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.
jump-statement deve risiedere nella stessa funzione e può apparire prima solo di un'istruzione nella stessa funzione. Il set di nomi identifier che seguono goto dispone del proprio spazio nomi in modo che i nomi non interferiscono con altri identificatori. Le etichette non possono essere ridichiarate. Vedere Spazi dei nomi per ulteriori informazioni.
È buona norma programmare lo stile per utilizzare l'istruzione break, continue e return piuttosto che goto quando possibile. Poiché l'istruzione break termina solo da un livello del ciclo, potrebbe essere necessario goto per uscire da un ciclo dall'interno di un ciclo eccessivamente annidato.
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.