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 a 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 the 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 the goto statement. Below program explains how to do this:

    C



    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

    C++

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

    Output:

    26 is 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.

    C

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

    C++

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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 :


11


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