C++ Sentencia goto

C++ 循环Bucles en C++

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

C++ goto 语句

Ejemplo

Ejemplo

#include <iostream>
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.

C++ 循环Bucles en C++

Otras extensiones