Breaks
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
yes it is very useful sometimes !!! for instance, have a look at VisualCalc's Parser[^], and get into the GetToken() function (
VCalcParser.cpp
, by the end of the file) ;) I'd even say that without the break, switch has no more interrest than a if statement. but thanks to the fact that we can continue the execution path through the following case statements until a break is found is a particularity we found in no other C/C++ fundamental.
[VisualCalc][Flags Beginner's Guide] | [Forums Guidelines][My Best Advice]
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
VuNic wrote:
Do you think the "break;" [C++] command is really needed at the end of every case statement? I've never been in a situation where I'd want the control to pass on to the next case after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos .
It's considered one of the 'wrong' defaults in C/C++.
-
yes it is very useful sometimes !!! for instance, have a look at VisualCalc's Parser[^], and get into the GetToken() function (
VCalcParser.cpp
, by the end of the file) ;) I'd even say that without the break, switch has no more interrest than a if statement. but thanks to the fact that we can continue the execution path through the following case statements until a break is found is a particularity we found in no other C/C++ fundamental.
[VisualCalc][Flags Beginner's Guide] | [Forums Guidelines][My Best Advice]
Yeah I get it. It'll be needed when the "switched" variable gets modified inside a particular case.. I miss a
reswitch
-- modified at 22:14 Tuesday 6th February, 2007
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
I've probably coded a fall-through like that maybe twice in my life. Not counting those times where I goofed and forgot the
break
. ;) (That shows what I think is a design mistake in C - the default behavior should be no fall-through betweencase
s, since that's what programmers will want the vast majority of the time. Oh well.) I was just looking up the C# spec and C# requiresbreak
statements even though the behavior is no fall-through. Bwa? :confused:--Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Ford, what's this fish doing in my ear?
-
I've probably coded a fall-through like that maybe twice in my life. Not counting those times where I goofed and forgot the
break
. ;) (That shows what I think is a design mistake in C - the default behavior should be no fall-through betweencase
s, since that's what programmers will want the vast majority of the time. Oh well.) I was just looking up the C# spec and C# requiresbreak
statements even though the behavior is no fall-through. Bwa? :confused:--Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Ford, what's this fish doing in my ear?
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
The biggest risk of missing a break would make the control fallthrough from one case to another and the elegant feature of C# compiler in overcoming this is to raise a compiler error when it finds such a scenario. However, empty case statements are allowed to fall through though.
Vasudevan Deepak Kumar Personal Homepage Tech Gossips
-
I've probably coded a fall-through like that maybe twice in my life. Not counting those times where I goofed and forgot the
break
. ;) (That shows what I think is a design mistake in C - the default behavior should be no fall-through betweencase
s, since that's what programmers will want the vast majority of the time. Oh well.) I was just looking up the C# spec and C# requiresbreak
statements even though the behavior is no fall-through. Bwa? :confused:--Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Ford, what's this fish doing in my ear?
Michael Dunn wrote:
I was just looking up the C# spec and C# requires break statements even though the behavior is no fall-through.
:confused::confused::~
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
VuNic wrote:
I've never been in a situation where I'd want the control to pass on to the next case after satisfying a particular case.
I have, many times. I *hate* that .NET doesn't allow this, and forces me to put a break.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
-
I've probably coded a fall-through like that maybe twice in my life. Not counting those times where I goofed and forgot the
break
. ;) (That shows what I think is a design mistake in C - the default behavior should be no fall-through betweencase
s, since that's what programmers will want the vast majority of the time. Oh well.) I was just looking up the C# spec and C# requiresbreak
statements even though the behavior is no fall-through. Bwa? :confused:--Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Ford, what's this fish doing in my ear?
At the summit, I listed several cases like this where C# fights you, and was told that they will continue to design C# for ease of use. I guess the alternative, to assume their users are not stupid, is lost on them.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
It should be the default, and
fallthrough;
should be the optional keyword However, this would have introduced another keyword. Maybe one could have reused "continue". I guess the "break" comes from the association of switch/case with goto labels.
Developers, Developers, Developers, Developers, Developers, Developers, Velopers, Develprs, Developers!
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
Linkify!|Fold With Us! -
The biggest risk of missing a break would make the control fallthrough from one case to another and the elegant feature of C# compiler in overcoming this is to raise a compiler error when it finds such a scenario. However, empty case statements are allowed to fall through though.
Vasudevan Deepak Kumar Personal Homepage Tech Gossips
That's not elegant - it sucks !!!
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
VuNic wrote:
Do you think the "break;" [C++] command is really needed at the end of every case statement?
No, it's not needed at the end of every one. There are rare instances where you might want to process code in one case but fall through to the next.
VuNic wrote:
I've never been in a situation where I'd want the control to pass on to the next case after satisfying a particular case.
Then in your case, you need a
break
between cases.VuNic wrote:
You know I missed to put a "break;" and it resulted in a big chaos
Silver lining - you've become a better programmer as a result of the experience.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001 -
VuNic wrote:
I've never been in a situation where I'd want the control to pass on to the next case after satisfying a particular case.
I have, many times. I *hate* that .NET doesn't allow this, and forces me to put a break.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
But we're talking about C++ here...
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001 -
But we're talking about C++ here...
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001Yes, and I'm saying that I've done it in C++, and I hate that I can't in C#.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
-
VuNic wrote:
I've never been in a situation where I'd want the control to pass on to the next case after satisfying a particular case.
I have, many times. I *hate* that .NET doesn't allow this, and forces me to put a break.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
Well, you can still do a fall-through with empty cases:
switch(value) { case 0: case 1: case 2: System.Console.Writeln("CodeProject.com"); break; }
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn Rand -
Well, you can still do a fall-through with empty cases:
switch(value) { case 0: case 1: case 2: System.Console.Writeln("CodeProject.com"); break; }
"When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, `Who is destroying the world?' You are."
-Atlas Shrugged, Ayn RandI know, but that's not enough.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
-
Do you think the "
break;
" [C++] command is really needed at the end of everycase
statement? I've never been in a situation where I'd want the control to pass on to the nextcase
after satisfying a particular case. You know I missed to put a "break;" and it resulted in a big chaos :doh:.
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"
VuNic wrote:
Do you think the "break;" [C++] command is really needed at the end of every case statement?
No. I think the default behavior is wrong here.
VuNic wrote:
I've never been in a situation where I'd want the control to pass on to the next case after satisfying a particular case.
I have. [edit]I make sure it's commented prominently.[/edit]
Cheers, Vikram.
"...we are disempowered to cultivate in their communities an inclination to assimilate to our culture." - Stan Shannon.
-
I know, but that's not enough.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog
You can also "goto" an specific case, which is probably what the compiler does after rearranging "case"s for performance.
-
VuNic wrote:
Do you think the "break;" [C++] command is really needed at the end of every case statement?
No, it's not needed at the end of every one. There are rare instances where you might want to process code in one case but fall through to the next.
VuNic wrote:
I've never been in a situation where I'd want the control to pass on to the next case after satisfying a particular case.
Then in your case, you need a
break
between cases.VuNic wrote:
You know I missed to put a "break;" and it resulted in a big chaos
Silver lining - you've become a better programmer as a result of the experience.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001John Simmons / outlaw programmer wrote:
you've become a better programmer as a result of the experience.
:-O:-O Thanks. It's encourging. Now I'm raring to make big mistakes :-O. [My boss::wtf:]
Dario: How is "directory" in French? (I mean a file system directory). John Simmons: "zee file holdaire thingie"