Instrução goto C ++

UMA goto declaração fornece um salto incondicional do goto para uma declaração rotulada na mesma função.

NOTE - Uso de gotoA instrução é altamente desencorajada porque torna difícil rastrear o fluxo de controle de um programa, tornando o programa difícil de entender e modificar. Qualquer programa que usa um goto pode ser reescrito para que não precise do goto.

Sintaxe

A sintaxe de uma instrução goto em C ++ é -

goto label;
..
.
label: statement;

Onde labelé um identificador que identifica uma instrução rotulada. Uma instrução rotulada é qualquer instrução precedida por um identificador seguido por dois pontos (:).

Diagrama de fluxo

Exemplo

#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 o código acima é compilado e executado, ele produz o seguinte 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

Um bom uso de goto é sair de uma rotina profundamente aninhada. Por exemplo, considere o seguinte fragmento de código -

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

Eliminando o gotoforçaria uma série de testes adicionais a serem realizados. Um simplesbreak declaração não funcionaria aqui, porque faria apenas com que o programa saia do loop mais interno.