Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | JohnF <john@please.see.sig.for.email.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Can I jump to a case inside a switch using goto? |
| Date | 2014-04-04 07:06 +0000 |
| Organization | PANIX Public Access Internet and UNIX, NYC |
| Message-ID | <lhllm9$fqa$1@reader1.panix.com> (permalink) |
| References | (1 earlier) <lnmwg3dub4.fsf@nuthaus.mib.org> <lhivi2$gku$1@reader1.panix.com> <lhjhqm$jjv$1@dont-email.me> <lhjjof$rv9$1@reader1.panix.com> <lhjqfs$ikr$1@dont-email.me> |
James Kuyper <jameskuyper@verizon.net> wrote:
> On 04/03/2014 08:21 AM, JohnF wrote:
>> James Kuyper <jameskuyper@verizon.net> wrote:
> ...
>>> "A break statement terminates execution of the smallest enclosing switch
>>> or iteration statement." (6.8.6.3p2) It doesn't matter how execution of
>>> the program reached the break statement, the only thing that matters is
>>> the location of the break statement.
>>
>> Thanks, James. I hadn't been aware of that before.
>> But after posting, I realized I hadn't exactly asked
>> the complete question that bothered me. Consider the
>> following snippet,
>> char label[100] = "printed during loop";
>> int nloop = 0;
>> while ( 1 ) {
>> int i = 0;
>> entry_pt:
>> i++;
>> printf("%s: i=%d\n",label,i);
>> if ( i >= 10 ) break;
>> } /* --- continue --- */
>> if ( ++nloop < 2 ) {
>> strcpy(label,"printed after goto");
>> goto entry_pt; }
>> Okay, so you know the question: what's the
>> value of i "printed after goto"? And what's the
>> general rule about that? And how portable is it?
>> Thanks,
>
> The goto statement enters the block containing the definition of 'i', so
> a new instance of i is created with an indeterminate value. The goto
> skips the initialization of i, which therefore doesn't occur. At least,
> that's how I interpret 6.2.4p6. If the indeterminate value of i is
> either a trap representation or INT_MAX, the i++ expression renders the
> behavior of the entire program undefined. Otherwise, the value of 'i' is
> unspecified, but valid, after the jump. In that case, the increment
> occurs normally, and INT_MIN < i && i <= INT_MAX at the time of the
> printf() call.
>
> If you want i to have a well-defined value after the goto, move the
> label before the declaration of i, or make i static.
Thanks for additional clarification, James (and for not
pointing out how my i++ was pretty darned useless:).
That seems to just emphasize the earlier judgement that
this kind of branch is more than likely a bad thing.
--
John Forkosh ( mailto: j@f.com where j=john and f=forkosh )
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Can I jump to a case inside a switch using goto? rivkaumiller@gmail.com - 2014-04-02 18:48 -0700
Re: Can I jump to a case inside a switch using goto? Keith Thompson <kst-u@mib.org> - 2014-04-02 19:24 -0700
Re: Can I jump to a case inside a switch using goto? <william@wilbur.25thandClement.com> - 2014-04-02 20:02 -0700
Re: Can I jump to a case inside a switch using goto? rivkaumiller@gmail.com - 2014-04-02 23:04 -0700
Re: Can I jump to a case inside a switch using goto? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-04-03 07:51 +0000
Re: Can I jump to a case inside a switch using goto? "BartC" <bc@freeuk.com> - 2014-04-03 09:39 +0100
Re: Can I jump to a case inside a switch using goto? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-04-03 11:52 +0100
Re: Can I jump to a case inside a switch using goto? "BartC" <bc@freeuk.com> - 2014-04-03 12:42 +0100
Re: Can I jump to a case inside a switch using goto? Keith Thompson <kst-u@mib.org> - 2014-04-03 08:04 -0700
Re: Can I jump to a case inside a switch using goto? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-04-03 15:59 +0000
Re: Can I jump to a case inside a switch using goto? Lowell Gilbert <lgusenet@be-well.ilk.org> - 2014-04-03 14:24 -0400
Re: Can I jump to a case inside a switch using goto? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-04-04 23:06 +0100
Re: Can I jump to a case inside a switch using goto? Paul N <gw7rib@aol.com> - 2014-04-03 04:15 -0700
Computed GOTOs (Was: Can I jump to a case inside a switch using goto?) gazelle@shell.xmission.com (Kenny McCormack) - 2014-04-03 11:33 +0000
Re: Computed GOTOs Richard <rgrdev_@gmail.com> - 2014-04-03 12:38 +0100
Re: Can I jump to a case inside a switch using goto? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-04-04 23:22 +0100
Re: Can I jump to a case inside a switch using goto? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-04-03 01:20 -0700
Re: Can I jump to a case inside a switch using goto? rivkaumiller@gmail.com - 2014-04-03 14:51 -0700
Re: Can I jump to a case inside a switch using goto? rivkaumiller@gmail.com - 2014-04-03 14:56 -0700
Re: Can I jump to a case inside a switch using goto? rivkaumiller@gmail.com - 2014-04-02 23:08 -0700
Re: Can I jump to a case inside a switch using goto? Keith Thompson <kst-u@mib.org> - 2014-04-03 08:09 -0700
Re: Can I jump to a case inside a switch using goto? JohnF <john@please.see.sig.for.email.com> - 2014-04-03 06:36 +0000
Re: Can I jump to a case inside a switch using goto? James Kuyper <jameskuyper@verizon.net> - 2014-04-03 07:48 -0400
Re: Can I jump to a case inside a switch using goto? JohnF <john@please.see.sig.for.email.com> - 2014-04-03 12:21 +0000
Re: Can I jump to a case inside a switch using goto? James Kuyper <jameskuyper@verizon.net> - 2014-04-03 10:16 -0400
Re: Can I jump to a case inside a switch using goto? Keith Thompson <kst-u@mib.org> - 2014-04-03 08:12 -0700
Re: Can I jump to a case inside a switch using goto? James Kuyper <jameskuyper@verizon.net> - 2014-04-03 12:44 -0400
Re: Can I jump to a case inside a switch using goto? JohnF <john@please.see.sig.for.email.com> - 2014-04-04 07:06 +0000
Re: Can I jump to a case inside a switch using goto? Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-14 16:38 -0700
Re: Can I jump to a case inside a switch using goto? rivkaumiller@gmail.com - 2014-04-03 00:18 -0700
Re: Can I jump to a case inside a switch using goto? "BartC" <bc@freeuk.com> - 2014-04-03 09:49 +0100
csiph-web