EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

goto Statement in C++

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » goto Statement in C++

goto Statement in C++

Introduction to goto Statement in C++

goto statement is a jump control statement that make use of goto keyword to control the flow of the program by jumping to other statements following the label name within functions. goto statement uses label name to jump to other statements, the label name is user defined identifier which uses a colon to distinguish the label name.

There are two types of syntaxes in goto Statement which is preferred:

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Syntax #1:

goto label;
.
.
.
label:

Label in the above syntax represents the user-defined input which tells the compiler to jump over that segment or block of code for any manipulation. The reverse of the label and goto label is also possible in the sense that labels can be placed before the goto label. It will be described in the second syntax which is as follows:

Syntax #2:

label:
.
.
.
goto label;

This syntax 2 also works in a similar way as syntax one with a minute difference of structure following and manipulation. The goal is to find the target and perform a jump between the codes.

Flowchart of goto Statement in C++

The flowchart of the goto statement in C++ with an explanation is given below.

Flowchart

Explanation: The flow of execution of this works in a way that supposes a programmer gives input and then executes the statement or code snippet and then wants to jump to somewhere else in the program then and there he or she will try to find out the target label as soon as it is found those set of statements will be executed followed by goto statement and then finally execution stops.

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (4,837 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)

Another way out is that after execution we can go for target label first after that execution and then context switching by moving from target label to goto statement. Therefore, the flow of execution can be anything but the special feature of the goto statement makes the traversing and jumps easier with the programmer’s interest level.

There are some disadvantages also associated with the goto Statement. Focusing only on the positive aspect is not a good idea at all.

  • It creates a very complex code structure like older code structures of languages like ALTRAN, FORTRAN.
  • The main problem is to understand the code after opening the code after years.
  • It becomes very tedious as it can enter an infinite loop if the goto statement is above the go-to call.

Therefore, the next question comes into mind is that how to avoid these goto Statements and answer is that they are unavoidable and substitute for them is continuous and break statements their working and feature is also same as the goto statement but still its not as advantageous to use as using goto statement.

How does goto Statement Work in C++?

Although goto Statement is considered very much advantageous for all the programmers as it provides an ease to them to perform jumps from one block of code to another block of code smoothly. Let’s see how many ways it can be performed.

Type – 1: Based on Syntax #1

Following syntax 1 is mostly preferred by many programmers who are planning to use the goto statement, but this is not mandatory to use syntax 1 which includes label definition followed by the goto Statement for this it can involve any feasible way which depends n on the user and their customization.

Example: Suppose we want to find out whether a number is even or odd and print the output accordingly using the goto statement. This code snippet or example will give a clarification:

Code:

#include <iostream>
using namespace std;
void CheckEvenOrOdd (int x)
{
if (x % 2 == 0)
goto even;
else
goto odd;
cout << x << " is even";
return;
odd:
cout << x << " is odd";
return;
even:
cout << x << " is even";
return;
}
int
main ()
{
int x = 26;
CheckEvenOrOdd (x);
return 0;
}

Output:

even or odd

Type – 2: Based on Syntax #2

Example: In this example, we will follow for syntax 2 which says the opposite of syntax 1 with a label followed by going to statement. There will not be much difference in the sense both will work as a code transition way only i.e. context switching.

Here in this example we can infer the fact that goes to label can be pinpointed after method representation and after definition, it is called and then the target is given to point and make the context switching available easily i.e. it helps the user to give and customize their definitions according to requirements easily.

Code:

#include <iostream>
using namespace std;
void printAllNumbers ()
{
int a = 1;
label:
cout << a << " ";
a++;
if (a <= 10)
goto label;
}
int main ()
{
printAllNumbers ();
return 0;
}

Output:

context switching

Examples of goto Statement in C++

Below are the examples of goto statements in C++:

Example #1

Code:

#include<iostream>
using namespace std;
void checkGreater()
{
int s, t;
s=2; t=5;
if(s>t)
goto sGreater;
else
goto tGreater;
sGreater:
cout<<s<<" is greater";
return;
tGreater:
cout<<t<<" is greater";
}
int main ()
{
checkGreater ();
return 0;
}

Output:

goto Statement in C++ 1-3

Example #2

Code:

#include <iostream>
using namespace std;
void printAllNumbers ()
{
int d = 1;
print:
cout << d << " ";
d++;
if (d <= 5)
goto print;
}
int main ()
{
printAllNumbers ();
return 0;
}

Output:

goto Statement in C++ 1-4

Conclusion

No Doubt goto Statements are very useful and give programmers that flexibility and versatility to perform the jumps from one code segment to another within the same program as well outside the program as well. But still every time a programmer cannot bind themselves with old and nomadic ways of programming. Alternatives like continuous and break statements are used to meet the above disadvantages according to the modern way of following the structural code or execution of code structures. It is always believed that we should keep our code less complex and easy to understand delivering quality which cannot be performed by using a goto statement but can be easily achieved using continuous and break statements.

Recommended Articles

This is a guide to goto Statement in C++. Here we discuss how does goto statement work in C++ with the examples and code implementation. You may also look at the following articles to learn more-

  1. Control Statement in C++
  2. Switch Statement in C++?
  3. Multimap in C++
  4. User Defined Data Types in C++

C++ Training (4 Courses, 3 Projects, 4 Quizzes)

4 Online Courses

5 Hands-on Projects

37+ Hours

Verifiable Certificate of Completion

Lifetime Access

4 Quizzes with Solutions

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Functions
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training (4 Courses, 3 Projects, 4 Quizzes) Learn More