What does this syntax of switch case mean?

余生长醉 提交于 2020-04-05 05:44:46

问题


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?


回答1:


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;



回答2:


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.



来源:https://stackoverflow.com/questions/17699746/what-does-this-syntax-of-switch-case-mean

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!