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
oggetto deve trovarsi nella stessa funzione e può essere visualizzato prima di una sola istruzione nella stessa funzione. Il set di identifier
nomi che segue un goto
oggetto ha uno spazio dei nomi specifico in modo che i nomi non interferiscano con altri identificatori. Le etichette non possono essere ricondichiate. Per altre informazioni, vedere Spazi dei nomi.
È uno stile di programmazione ottimale per usare l'istruzione break
, continue
e return
in preferenza per goto
ogni volta che possibile. Poiché l'istruzione break
esce solo da un livello del ciclo, può essere necessario uscire goto
da un ciclo dall'interno di un ciclo 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.