goto statement in C/C++

The goto statement is a jump statement which is sometimes also referred to as unconditional jump statement. The goto statement can be used to jump from anywhere to anywhere within a function.
Syntax:

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

In the above syntax the first line tells the compiler to go to or jump to the statement marked as label. Here label is a user defined identifier which indicates the target statement. The statement immediately followed after ‘label:’ is the destination statement. The ‘label:’ can also appear before the ‘goto label;’ statement in above syntax.
goto
Below are some examples on how to use goto statement:
Examples:

  • Type 1: In this case we will see a situation similar to as shown in Syntax1 above. Suppose we need to write a program where we need to check if a number is even or not and print accordingly using goto statement. Below program explains how to do this:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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)
            goto even; // jump to even
        else
            goto odd; // jump to odd
      
    even:
        cout << num << " is evenn";
        return; // return if even
    odd:
        cout << num << " is oddn";
    }
      
    // Driver program to test above function
    int main()
    {
        int num = 26;
        checkEvenOrNot(num);
        return 0;
    }

    chevron_right

    
    

    Output:

    26 is even
    

    Note the return statement after ‘even:’ in checkEvenOrNot function. Once the control jumps to the label with even:, the program will execute every piece of code after it. So it is important to return if the number is even. Otherwise, the code after label odd will also get executed as it comes after even.

  • Type 2:: In this case, we will see a situation similar to as shown in Syntax1 above. Suppose we need to write a program which prints numbers from 1 to 10 using the goto statement. Below program explains how to do this.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

    Output:

    1 2 3 4 5 6 7 8 9 10
    

Disadvantages of using goto statement:

  • The use of goto statement is highly discouraged as it makes the program logic very complex.
  • use of goto makes the task of analyzing and verifying the correctness of programs (particularly those involving loops) very difficult.
  • Use of goto can be simply avoided using break and continue statements.

This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : SonalSrivastava02



Article Tags :
Practice Tags :


7


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.