About switch case statements...

KennyTM~ kennytm at gmail.com
Mon Nov 16 09:30:43 PST 2009


On Nov 17, 09 01:12, Bill Baxter wrote:
> On Mon, Nov 16, 2009 at 8:24 AM, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org>  wrote:
>> Walter Bright wrote:
>>>
>>> Andrei Alexandrescu wrote:
>>>>
>>>> I was hoping the lesson learned would be to fix switch as was suggested.
>>>
>>> I checked, because it wasn't written in the way I usually write things,
>>> and sure enough it wasn't code I wrote :-)
>>>
>>>   From the changelog for D 0.129: "Incorporated Ben Hinkle's new std.format
>>> which can print general arrays."
>>>
>>> http://www.digitalmars.com/d/1.0/changelog1.html#new0129
>>
>> So people are liable to make the mistake.
>>
>> Andrei
>>
>
> What about when you want to fall through to a multiple label?  Or a range label?
>
> case 0:
>      // do stuff
>      goto case ??;
> case 1: .. case 9:
>       // do more stuff
>       goto case ??;
> case 10,20,30:
>       // still more stuff
>
> The obvious answer would seem to be just "pick any one".
> I just bring it up because I haven't seen that ... uh case ...
> mentioned by anyone.
>
> --bb

Since

case a:
..
case b:

expands to

case a:
case a+1:
case a+2:
// ....
case b:

and

case a,b,c,d:

expands to

case a:
case b:
case c:
case d:

Your speculation is correct. Please note that the "goto case X;" 
statement works *now*, so there's no need to guess its behavior.



More information about the Digitalmars-d mailing list