+ 42
How to use "goto" in c++?
63 Answers
+ 45
You shouldn't use goto. It's a bad coding practice and makes your code hard to read. Google "Spaghetti Code".
https://www.tutorialspoint.com/cplusplus/cpp_goto_statement.htm
+ 44
guys this is horrible,I don,t know why people downvote
such questions,is,nt sololearn a place for begginers to learn,then why people downvote genuine queries and upvote useless stuffs unrelated to programming.Don,t discourage begginers from asking questions!!
This question has got 2 downvotes,if you don,t want,t to answerlthen why downvote.
btw,he only asked how to use it,he did,nt ask whether it's a good programming practice or not!!
+ 38
Firstly, I'd like to say thank you to all friends for adjusting the programming path for learners and making them aware of bad practices in programming.
Even though fooling around with goto guy isn't considered a clean way to deal with the conditional branching, but for the sake of experiment and to see how it's been used in some legacy codes (or perhaps refreshing your assembly memory!), it's worth it to do a quick review as part of a simple loop. (In fact, the inspiration comes from the fact that compilers generating assembly code out of your c++ code, and interestingly, loop stuff and their mechanisms after conversion, contain a couple of goto statements.)
My experiment : [https://code.sololearn.com/cF3K2X2c3AC3]
// ============================
// dependent numbers sequence
// Done for: Bela Kristianti
// By : Babak Sheykhan
// ============================
#include <iostream>
using namespace std;
int main()
{
int x = 0;
int y = 0;
int i = 1;
do { cout << "Enter x: "; cin >> x; } while (!(x >= 7 && x <= 100));
do { cout << "Enter y: "; cin >> y; } while (!(y >= 4 && y <= x));
cout << endl;
// Loop using goto
start:
if (x > 0) {
if (i <= y) { cout << i++ << " "; --x; }
else i = 1;
goto start;
}
else goto end;
end:;
}
The main Idea was introduced by Mr. JPM7.
Credit: [https://code.sololearn.com/cvL7PY7iXp35]
Mr.JPM7 profile: [https://www.sololearn.com/Profile/1866768]
+ 13
Don't use it, not recommended
+ 12
check here:https://code.sololearn.com/cKYTp2xlVlK0/?ref=app
goto is use in this simple manner and definately you can easily understand how and it's work in c++:
program:
#include<stdio.h>
int main()
{
int a;
a=10;
start:a++;
if(a<=20)
{
printf("%d\n",a);
goto start;
}
}
output:
11
12
13
14
15
16
17
18
19
20
https://www.sololearn.com/Profile/928735/?ref=app
+ 9
using goto is not good coding practice.
+ 9
you should not ise goto in codes.
+ 8
@ChaoticDawg, I meant every link is a goto. It is strange we won't accept it in programming. But on internet we can't live without it, internet is really a collection of goto's.
+ 7
@Paul I provided that particular link about goto because not only does it answer the OP's question on how to use it, but it also briefly discusses why you shouldn't use it in addtion to when you may consider using goto in an appropriate manner.
If you've ever written a large batch (CMD) style program/script or similar that uses goto like syntax, you'd understand why the use of goto is discouraged. I've been there and it really sucked trying to keep things straight. Makes one really appreciate the functions, methods and loop styles most higher level languages have.
+ 7
yeah.. i think sololearn police just dragged him out..๐๐๐๐๐๐
+ 6
It is funny, never use goto in programming, they say. Then they give you a link, to goto.
In the past I have used goto. It was always difficult to maintain your programs. Goto used line numbers. If you changed your program, lines numbers changed, and goto's didn't work anymore, because you forgot to change them.
+ 6
#include <iostream>
using namespace std;
int main () {
int age;
LOOP:do {
cout<<"Enter your age:";
cin>>age;
if( age<10) {
goto LOOP;
}
else{
cout << "Good to go";
break;
}
} while( true);
return 0;
}
//if this is not your answer.. please go to
//stockoverflow and ask for help ๐๐๐๐
//God Bless
+ 6
You have answers, so...this time with references: My position remains the same: skilled, conscious deliberate use -- know why you're using it, when it results in cleaner, safer code -- and why to do it in c but not c++:
Linus Torvalds (wrote Linux):
https://www.kernel.org/doc/Documentation/process/coding-style.rst
"Centralized exiting of functions (section 7): The goto statement comes in handy when a function exits from multiple locations and some common work such as cleanup has to be done. "
Linux kernel 4.14.1 is 3 days old. In fork.c:
http://elixir.free-electrons.com/linux/latest/source/kernel/fork.c#L547
Ref: https://www.quora.com/What-are-the-commonly-used-C-idioms-in-Linux-Kernel
"Sometimes ... valid to use GOTO as an alternative to exception handling within a single function: <code sample> COM [Component Object Model] code seems to fall into this pattern fairly often."
https://stackoverflow.com/a/46638
"...[it's a new generation, so the original meaning of the warning got lost; today] the biggest problem with goto is [probably social]."
https://stackoverflow.com/a/25773503
A kernel pattern example (C)
https://stackoverflow.com/a/245761
Google "Go" source code, lines 186 + 193:
https://golang.org/src/math/gamma.go
Ref: https://stackoverflow.com/a/11065563
When to use goto when programming in C
https://www.cprogramming.com/tutorial/goto.html
Clarity (like preventing memory leaks), optimization, finite state machines:
https://blog.smartbear.com/development/goto-still-has-a-place-in-modern-programming-no-really/
"Mea culpa! Sometimes, the experts agree, GOTO can be very useful."
+ 5
goto label; // label is your target code
. /*
. some
. code
.
. */
label: // jumped here leaving some code
// your code
goto is mainly used for jumping statements that is why it is criticized, as it disrupts flow of control
+ 5
using goto isn't really a good practice, particularly in c++, there are different ways to alter program flow and goto isn't a good choice.
now your question : how to use goto: eg
#include <iostream>
int main(){
int age;
reEnterAge: std::cout<<"enter your age"; //create a label
std::cin>>age;
if(age < 10 )
goto reEnterAge; //alter program flow back to label
else
std::cout<<"good to go";
}
+ 5
gotoxy (x,y)
+ 4
@Ahmed is your question academic or practical in nature? Do you have a particular use case or problem that you are trying to solve?
Some commenters have already stated the conventional wisdom to avoid goto statements. Generally, this is good advice but you may have a good reason to use goto. Often there is a better way of coding your design with using other safer and more common coding idioms (e.g. if/else, switch, while, for...).
+ 4
yeah.. he should stop...maybe @Ahha is just a kid...3 or 4 years ๐๐๐๐๐
+ 4
in my country, some guys are doing like that..really notorious....without drinking anything they just did stupid things.. i didn't get it untill now๐๐๐
+ 4
goto
gotoย statement transfer the control to the label specified with the goto statementlabel is any name give to particular part in programlabel is followed with a colon (:)
Syntax :
label1:
-
- goto label1;