Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A goto instrução transfere incondicionalmente o controle para a instrução rotulada pelo identificador especificado.
Sintaxe
goto identifier;
Observações
A declaração rotulada designada por identifier deve estar na função atual. Todos os identifier nomes são membros de um namespace interno e, portanto, não interferem com outros identificadores.
Um rótulo de declaração é significativo apenas para uma goto declaração, caso contrário, os rótulos de declaração são ignorados. Os rótulos não podem ser redesenhados.
Uma goto instrução não tem permissão para transferir o controle para um local que ignora a inicialização de qualquer variável que esteja no escopo nesse local. O exemplo a seguir gera C2362:
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
É um bom estilo de programação usar as breakinstruções , continuee return em vez da goto instrução sempre que possível. No entanto, como a break instrução sai de apenas um nível de um loop, talvez seja necessário usar uma goto instrução para sair de um loop profundamente aninhado.
Para obter mais informações sobre rótulos e a goto instrução, consulte Declarações rotuladas.
Exemplo
Neste exemplo, uma goto instrução transfere o controle para o ponto rotulado stop quando i é igual 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