Istruzione goto (C++)
L'istruzione goto
trasferisce in modo incondizionato il controllo all'istruzione etichettata dall'identificatore specificato.
Sintassi
goto identifier;
Osservazioni:
L'istruzione con etichetta designata da identifier
deve essere nella funzione corrente. Tutti i nomi di identifier
sono membri di uno spazio dei nomi interno e quindi non interferiscono con altri identificatori.
Un'etichetta di istruzione è significativa solo per un'istruzione goto
. In caso contrario, le etichette delle istruzioni vengono ignorate. Le etichette non possono essere ridichiarate.
Un'istruzione goto
non può trasferire il controllo in una posizione che ignora l'inizializzazione di qualsiasi variabile nell'ambito in tale posizione. L'esempio seguente genera l'errore C2362:
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
È un buon stile di programmazione usare le break
istruzioni , continue
e return
anziché l'istruzione goto
quando possibile. Tuttavia, poiché l'istruzione break
esce da un solo livello di un ciclo, potrebbe essere necessario usare un'istruzione goto
per uscire da un ciclo annidato in modo approfondito.
Per altre informazioni sulle etichette e sull'istruzione goto
, vedere Istruzioni etichettate.
Esempio
In questo esempio un'istruzione trasferisce il goto
controllo al punto etichettato stop
quando i
è uguale a 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
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per