instrucción goto en C/C++

La declaración goto es una declaración de salto que a veces también se conoce como declaración de salto incondicional. La declaración goto se puede usar para saltar de cualquier lugar a cualquier lugar dentro de una función.
Sintaxis :

Syntax1      |   Syntax2
----------------------------
goto label;  |    label:  
.            |    .
.            |    .
.            |    .
label:       |    goto label;

En la sintaxis anterior, la primera línea le dice al compilador que vaya o salte a la instrucción marcada como etiqueta. Aquí, la etiqueta es un identificador definido por el usuario que indica la declaración de destino. La declaración que sigue inmediatamente después de ‘etiqueta:’ es la declaración de destino. La ‘etiqueta:’ también puede aparecer antes de ‘goto label;’ instrucción en la sintaxis anterior.
ir
A continuación se muestran algunos ejemplos de cómo usar la sentencia goto:
Ejemplos:

  • Tipo 1 : en este caso, veremos una situación similar a la que se muestra en la sintaxis 1 anterior. Supongamos que necesitamos escribir un programa en el que necesitamos verificar si un número es par o no e imprimir en consecuencia usando la instrucción goto. El siguiente programa explica cómo hacer esto:

    C

    // C program to check if a number is
    // even or not using goto statement
    #include <stdio.h>
      
    // function to check even or not
    void checkEvenOrNot(int num)
    {
        if (num % 2 == 0)
            // jump to even
            goto even; 
        else
            // jump to odd
            goto odd; 
      
    even:
        printf("%d is even", num);
        // return if even
        return
    odd:
        printf("%d is odd", num);
    }
      
    int main() {
        int num = 26;
        checkEvenOrNot(num);
        return 0;
    }

    C++

    // C++ program to check if a number is
    // even or not using goto statement
    #include <iostream>
    using namespace std;
      
    // function to check even or not
    void checkEvenOrNot(int num)
    {
        if (num % 2 == 0)
        // jump to even
            goto even; 
        else
        // jump to odd
            goto odd; 
      
    even:
        cout << num << " is even";
        // return if even
        return
    odd:
        cout << num << " is odd";
    }
      
    // Driver program to test above function
    int main()
    {
        int num = 26;
        checkEvenOrNot(num);
        return 0;
    }
    Producción:

    26 is even
    
  • Tipo 2: : En este caso, veremos una situación similar a la que se muestra en la Sintaxis1 anterior. Supongamos que necesitamos escribir un programa que imprima números del 1 al 10 usando la instrucción goto. El siguiente programa explica cómo hacer esto.

    C

    // C program to print numbers
    // from 1 to 10 using goto statement
    #include <stdio.h>
      
    // function to print numbers from 1 to 10
    void printNumbers()
    {
        int n = 1;
    label:
        printf("%d ",n);
        n++;
        if (n <= 10)
            goto label;
    }
      
    // Driver program to test above function
    int main() {
        printNumbers();
        return 0;
    }

    C++

    // C++ program to print numbers
    // from 1 to 10 using goto statement
    #include <iostream>
    using namespace std;
      
    // function to print numbers from 1 to 10
    void printNumbers()
    {
        int n = 1;
    label:
        cout << n << " ";
        n++;
        if (n <= 10)
            goto label;
    }
      
    // Driver program to test above function
    int main()
    {
        printNumbers();
        return 0;
    }
    Producción:

    1 2 3 4 5 6 7 8 9 10
    

Desventajas de usar la instrucción goto:

  • Se desaconseja encarecidamente el uso de la instrucción goto, ya que hace que la lógica del programa sea muy compleja.
  • el uso de goto hace que la tarea de analizar y verificar la corrección de los programas (particularmente aquellos que involucran bucles) sea muy difícil.
  • El uso de goto se puede evitar simplemente usando sentencias break y continue .

Este artículo es una contribución de Harsh Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *