Reputation: 3287
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
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
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