Sentencia goto de C ++

UNA goto instrucción proporciona un salto incondicional de goto a una instrucción etiquetada en la misma función.

NOTE - Uso de gotoEsta declaración se desaconseja en gran medida porque dificulta el seguimiento del flujo de control de un programa, lo que hace que el programa sea difícil de entender y difícil de modificar. Cualquier programa que use un goto se puede reescribir para que no necesite el goto.

Sintaxis

La sintaxis de una instrucción goto en C ++ es -

goto label;
..
.
label: statement;

Dónde labeles un identificador que identifica una declaración etiquetada. Una declaración etiquetada es cualquier declaración que esté precedida por un identificador seguido de dos puntos (:).

Diagrama de flujo

Ejemplo

#include <iostream>
using namespace std;
 
int main () {
   // Local variable declaration:
   int a = 10;

   // do loop execution
   LOOP:do {
      if( a == 15) {
         // skip the iteration.
         a = a + 1;
         goto LOOP;
      }
      cout << "value of a: " << a << endl;
      a = a + 1;
   } 
   while( a < 20 );
 
   return 0;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19

Un buen uso de goto es salir de una rutina profundamente anidada. Por ejemplo, considere el siguiente fragmento de código:

for(...) {
   for(...) {
      while(...) {
         if(...) goto stop;
         .
         .
         .
      }
   }
}
stop:
cout << "Error in program.\n";

Eliminando el gotoobligaría a realizar una serie de pruebas adicionales. Un simplebreak La declaración no funcionaría aquí, porque solo haría que el programa saliera del bucle más interno.