Denis Koroskin wrote:
On Mon, 06 Jul 2009 14:12:40 +0400, Walter Bright <newshou...@digitalmars.com> wrote:

Denis Koroskin wrote:
Does it compare on case-by-case basis? Up to 256 comparisons?

What do you mean? Obj2asm will show what it is doing.

I mean, will it translate

switch (i) {
    case 0:
    ..
    case 9:
       doSomething();
}

into

if (i == 0 || i == 1 || i == 2 || etc) doSomething();

or into

if (i >=0 || i <= 9) doSomething();

I'm sure it translate it to:

case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:

That's obvious from the "maximum of 256 cases allowed".

And also you can see that in the source code. :)

Statement *CaseRangeStatement::semantic(Scope *sc)
...
/* This works by replacing the CaseRange with an array of Case's.
 *
 * case a: .. case b: s;
 *    =>
 * case a:
 *   [...]
 * case b:
 *   s;
 */

Reply via email to