Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #42561

Re: Can I jump to a case inside a switch using goto?

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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