goto (Instrucción) (C++)
La instrucción goto
transfiere incondicionalmente el control a la instrucción etiquetada por el identificador especificado.
Sintaxis
goto identifier;
Comentarios
La instrucción con etiqueta designada por identifier
debe estar en la función actual. Todos los nombres de identifier
son miembros de un espacio de nombres interno y, por tanto, no interfieren con otros identificadores.
Una etiqueta de instrucción solo es significativa para una instrucción goto
; de lo contrario, se omiten las etiquetas de instrucciones. Las etiquetas no se pueden volver a declarar.
No se permite que una instrucción goto
transfiera el control a una ubicación que omita la inicialización de cualquier variable que esté en el ámbito de esa ubicación. En el ejemplo siguiente se produce el error C2362:
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
Una buena recomendación de programación es utilizar las instrucciones break
, continue
y return
en lugar de la instrucción goto
siempre que sea posible. Sin embargo, puesto que la instrucción break
sale de un solo nivel de un bucle, puede que tenga que utilizar una instrucción goto
para salir de un bucle anidado profundamente.
Para más información sobre las etiquetas y la instrucción goto
, consulte Instrucciones con etiquetas.
Ejemplo
En este ejemplo, una instrucción goto
transfiere el control al punto con la etiqueta stop
cuando i
es 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
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de