6

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?

phuclv
  • 37,963
  • 15
  • 156
  • 475
user2131316
  • 3,111
  • 12
  • 39
  • 53
  • thank you man, I basically can guess what does this mean, but I need to get confirmed and know whether this is standarded? – user2131316 Jul 17 '13 at 12:36
  • 1
    @user2131316 As I noted below you can use `gcc -std=c99 -pedantic` to check against a specific standard – Shafik Yaghmour Jul 17 '13 at 12:39
  • Does this answer your question? [What is "..." in switch-case in C code](https://stackoverflow.com/questions/18853502/what-is-in-switch-case-in-c-code) – phuclv Jan 22 '20 at 07:22
  • [Are Elipses in case statements standard C/C++](https://stackoverflow.com/q/5924681/995714) – phuclv Jan 22 '20 at 07:23

2 Answers2

8

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;
ouah
  • 142,963
  • 15
  • 272
  • 331
1

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.

Shafik Yaghmour
  • 154,301
  • 39
  • 440
  • 740