D's SwitchStatement accepts statements with ridiculous semantics

drug drug2004 at bk.ru
Sat Sep 30 08:42:06 UTC 2017


30.09.2017 05:35, sarn пишет:
> 
> For anyone who's wondering, it works because switch is just a computed 
> goto.  The code's equivalent to this:
> 
> import std.stdio;
> 
> void main()
> {
>      int i = 0;
> 
>      // switch(i)
>      if (i == 7)
>      {
>          goto case_7;
>      }
>      else
>      {
>          goto case_default;
>      }
> 
>      // for loop initialiser
>      i = 8;
>      // for loop test
>      while (i < 10)
>      {
> case_7:
>          writeln(i);
>          return;
> case_default:
>          // for loop update
>          ++i;
>      }
> }

Thanks for clarification!


More information about the Digitalmars-d mailing list