user2131316
user2131316

Reputation: 3287

What does this syntax of switch case mean?

I saw some C code like this:

int check = 10:

switch(check) {
            case 1...9: printf("It is 2 to 9");break;
            case 10: printf("It is 10");break;
} 

What does this case 1...9: mean? Is it standard?

Upvotes: 6

Views: 772

Answers (2)

Shafik Yaghmour
Shafik Yaghmour

Reputation: 158569

This is gcc extension, they easiest way to usually figure this out with gcc at least is to use -pedantic argument:

gcc -pedantic

will warn:

warning: range expressions in switch statements are non-standard [-pedantic]

and if you wanted to check against a specific standard, for example c99, you do as follows:

 gcc -std=c99 -pedantic

Also, this is not correct:

case 1...9:

you need spaces between the dots and numbers:

case 1 ... 9:

as noted in the document:

Be careful: Write spaces around the ..., for otherwise it may be parsed wrong when you use it with integer values.

Upvotes: 1

ouah
ouah

Reputation: 145899

It's a GNU C extension called case range.

http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html

As noted in the document, you have to put spaces between the low and high value of the range.

case 1 ... 9:
    statement;

is equivalent to:

case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
    statement;

Upvotes: 8

Related Questions