C++ Sentencia goto
gotoLa sentencia permite transferir incondicionalmente el control a una sentencia etiquetada dentro de la misma función.
Nota:En cualquier lenguaje de programación, no se recomienda el uso de la sentencia goto, ya que hace que el flujo de control del programa sea difícil de rastrear, y el programa sea difícil de entender y modificar. Cualquier programa que use la sentencia goto puede reescribirse sin necesidad de usarla.
Sintaxis
En C++,goto la sintaxis de la sentencia:
goto label; .. . label: statement;
Aquí,labeles el identificador que identifica la sentencia etiquetada; puede ser cualquier texto plano excepto las palabras clave de C++. La sentencia etiquetada puede ser cualquier sentencia, colocada después del identificador y los dos puntos (:).

Diagrama de flujo
Ejemplo
Ejemplo
using namespace std;
int main ()
{
// declaración de variable local
int a = 10;
// ejecución del bucle do
LOOP:do
{
if( a == 15)
{
// saltar la iteración
a = a + 1;
goto LOOP;
}
cout << El valor de a: << a << endl;
a = a + 1;
}while( a < 20 );
return 0;
}
Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:
a 的值: 10 a 的值: 11 a 的值: 12 a 的值: 13 a 的值: 14 a 的值: 16 a 的值: 17 a 的值: 18 a 的值: 19
Un buen uso de la sentencia goto es salir de rutinas profundamente anidadas. Por ejemplo, observe el siguiente fragmento de código:
for(...) {
for(...) {
while(...) {
if(...) goto stop;
.
.
.
}
}
}
stop:
cout << "Error in program.\n";
Eliminargotoprovocará que se ejecuten algunas pruebas adicionales. Una simplebreaksentencia no funcionará aquí, porque solo hará que el programa salga del bucle más interno.
Otras extensiones
Bucles en C++