Istruzione goto C ++

UN goto fornisce un salto incondizionato dal goto a un'istruzione etichettata nella stessa funzione.

NOTE - Uso di gotoè altamente sconsigliato perché rende difficile tracciare il flusso di controllo di un programma, rendendolo difficile da capire e difficile da modificare. Qualsiasi programma che utilizza un goto può essere riscritto in modo che non abbia bisogno del goto.

Sintassi

La sintassi di un'istruzione goto in C ++ è:

goto label;
..
.
label: statement;

Dove labelè un identificatore che identifica un'istruzione etichettata. Un'istruzione etichettata è qualsiasi istruzione preceduta da un identificatore seguito da due punti (:).

Diagramma di flusso

Esempio

#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;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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 buon uso di goto è uscire da una routine profondamente annidata. Ad esempio, considera il seguente frammento di codice:

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

Eliminando il file gotocostringerebbe l'esecuzione di una serie di test aggiuntivi. Un semplicebreak l'istruzione non funzionerebbe qui, perché causerebbe solo l'uscita del programma dal ciclo più interno.