On Friday, 29 September 2017 at 09:56:17 UTC, Dukc wrote:
On Friday, 29 September 2017 at 09:12:54 UTC, Don Clugston wrote:
Guess what this prints

My guess is it prints "1".

By "guess" I mean it, I did not test! Anyway reminds me a lot of very badly used gotos.

Yeah, it's a lot like Duff's Device:
https://en.wikipedia.org/wiki/Duff's_device

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;
        }
}

Reply via email to