C++ Goto Statement - C++ Programming Tutorial
C++ Course / Miscellaneous / C++ Goto Statement

C++ Goto Statement

BLUF: Mastering C++ Goto Statement is a critical step in becoming a proficient C++ developer. This lesson provides a deep dive into the syntax, performance considerations, and real-world applications of this concept.
Key Performance Insight: C++ Goto Statement

C++ is renowned for its efficiency. Learn how C++ Goto Statement enables low-level control and high-performance computing in the tutorial below.

C++ employs the goto statement as a control transfer statement, allowing developers to navigate program flow to specified labels within the current function. This statement executes unconditionally and then transfers control to a designated location within the function.

It is employed to redirect execution flow within the program. This command unconditionally moves to the designated label. This feature is beneficial for navigating out of intricate loops or switch case scenarios.

Syntax

It has the following syntax:

Example

goto label; 

... .. ... 

... .. ... 

    //Skipped Code

... .. ... 

label: statement; 

... .. ...

   //Execution continues

In C++, the goto statement allows the label to be present within the same scope at any location.

Flow Diagram of the goto Statement

Simple example of goto statememt

Example

Example

#include <iostream>  //Include standard stream library

using namespace std;  //using the standard namespace

int main()  

{  

ineligible:    //label ineligible used for goto statement

         cout<<"You are not eligible to vote!\n";    

      cout<<"Enter your age:\n";    

      int age;  

      cin>>age;  

      //check the if condition

if (age < 18){    

              goto ineligible; //label name

      }    

      else    

      {    

              cout<<"You are eligible to vote!";     

      }         

return 0;

}

Output:

Output

You are not eligible to vote!

Enter your age:

16

You are not eligible to vote!

Enter your age:

7

You are not eligible to vote!

Enter your age:

22

You are eligible to vote!

Explanation:

In this instance, we are employing a goto statement to evaluate various conditions. Additionally, we are utilizing an ineligible condition for the goto statement.

Why do we use the goto Statement?

Programmers employ the goto statement in C++ programming to interrupt tasks within deep loops or handle specific errors efficiently. However, excessive use of goto can lead to increased code complexity, making it challenging to understand and maintain the codebase.

The primary purpose of the goto statement is to transfer control within a program to different labels. While structured programming discourages excessive use of goto, programmers may find it advantageous in situations where alternative approaches are overly complex to execute.

When do we use the Goto Statement?

  • Exiting deeply nested loops: Users can break several nested loops at once through clean usage of goto.
  • Error handling in simple programs: The statement provides simple error handling through basic exception management in programs that lack structured error-handling requirements.
  • Jumping to specific sections in a function: Utilizing goto statements allows us to reach specific locations in a function thereby decreasing unnecessary code.
  • C++ Goto Statement Example:

Let's consider another instance of a goto statement in C++.

Exiting Deeply Nested Loops

Example

Example

#include <iostream>  

using namespace std;

int main()  

{  

	// Outer loop: iterates over i from 1 to 3

    for (int i = 1; i <= 3; i++) {  

        // Middle loop: iterates over j from 1 to 3

        for (int j = 1; j <= 3; j++) {  

            // Inner loop: iterates over k from 1 to 3

            for (int k = 1; k <= 3; k++) {  

                cout << i << j << k << endl;  

                // Check if i, j, and k are all equal to 2

                if (i == 2 && j == 2 && k == 2) {  

                    // Exit all loops by jumping to the exitLoops label

                    goto exitLoops;  

                }  

            }  

        }  

    }  

exitLoops:  

    cout << "Exited all loops!" << endl;  

    return 0;  

}

Output:

Output

111

112

113

121

122

123

131

132

133

211

212

213

221

222

Exited all loops!

Explanation:

In this instance, the goto statement is employed to exit from multiple nested loops upon meeting a particular condition.

Error Handling Without Exception Mechanism

Example

Example

#include <iostream>  

using namespace std;

int main()  

{  

    int number;  // Declare an integer variable to store the user's input

    cout << "Enter a positive number: ";  

    cin >> number;  // Read the user's input and store it in the 'number' variable

        // Check if the entered number is negative

if (number < 0) {  

     // If negative, jump to the 'error' label

        goto error;  

    }  

    cout << "You entered: " << number << endl;  

    return 0;  

error:  

    cout << "Error! Negative numbers are not allowed." << endl;  

    return 1;  

}

Output:

Output

Enter a positive number: -5  

Error! Negative numbers are not allowed.

Explanation:

Here, the goto function streamlines error management by directing the program flow to an error message when an incorrect input is supplied.

Skipping Execution of Certain Code Blocks

Example

Example

#include <iostream>  

using namespace std;

int main()  

{  

    cout << "Processing data...\n";  

	    // Unconditional jump to the label 'skip'

    goto skip;  

    cout << "This statement will be skipped!\n";  

    // Label 'skip' serves as a target for the goto statement

skip:  

    cout << "Execution resumed after skipping.\n";  

    return 0;  

}

Output:

Output

Processing data...  

Execution resumed after skipping.

Explanation:

Here, the program skips directly to the "skip" instruction, disregarding the intermediate statement.

Advantages of using the goto Statement

Several advantages of using the goto statement in C++ are as follows:

  • Simplifies control flow in certain cases: The goto statement makes control flow easier to manage when specific conditions apply because it allows quick loop escapes from multiple nested loops.
  • Reduces code duplication: The statement helps users skip the need to write duplicate conditions within specific programming situations.
  • Provides quick error handling (in simple cases): Quick error management without exception handling remains possible through its quick error handling mechanism (in basic error situations).
  • Disadvantages of Goto Statement

Several disadvantages of using the goto statement in C++ are as follows:

  • The goto statement may reduce modularity because code becomes dependent on specific labels rather than reusable functions.
  • Almost all goto statement use cases may be replaced with functions, loops , and exception handling (try-catch).
  • It makes code less modular and harder to manage.
  • Using goto statements, the code often becomes more complex than necessary, making it hard to rewrite or improve.
  • Frequently Asked Questions

    1. When would developers need to use the goto statement within C++ programming?

The 'goto' command primarily functions as a control tool that guides the flow of execution to specific labels within the same block of code. It offers valuable capabilities for breaking out of deeply nested loops and managing basic error handling and program-skipping tasks. It is advisable to limit the use of goto statements to prevent readability issues and maintain code quality effectively.

2. What scenarios make 'goto' inappropriate for use in C++?

We should steer clear of utilizing the 'goto' statement when we can achieve the desired result through the use of structured programming components like 'for' and 'while' loops, 'if-else' conditionals, and functions. Limiting the use of 'goto' is advisable as it makes code examination more challenging for developers and leads to the creation of chaotic programming logic known as "spaghetti code".

3. What role does goto play when we need to exit nested loops?

A single instance of the break command stops the current loop execution, but when we require exiting multiple nested loops, a different approach is necessary. The goto statement provides a way for developers to directly jump to a specified label located outside all loops, effectively terminating all loop iterations. This feature serves as a useful tool in scenarios where breaking out of multiple loop structures is required.

4. Does C++ provide a goto statement that enables function-to-function jumping?

The goto statement operates solely within a single function's scope while it runs. Moving control of execution from one function to another is not feasible as it disrupts the program's structure and leads to unpredictable results.

5. What methods replace the 'goto' keyword in contemporary C++ programming?

The updated C++ programming language offers three enhanced alternatives: loops incorporating " break " and " continue " statements, error management using " try-catch " blocks, and structured components combining functions with conditional statements. These various coding choices result in manageable and comprehensible programs that achieve outcomes similar to goto statements.

Input Required

This code uses input(). Please provide values below:

Logic Practice
Install Logic Practice
Add to home screen for a faster app-like experience