我看到一些像这样的C代码:
int check = 10:
switch(check) {
case 1...9: printf("It is 2 to 9");break;
case 10: printf("It is 10");break;
}
这是什么case 1...9:
意思?是标准的吗?
我看到一些像这样的C代码:
int check = 10:
switch(check) {
case 1...9: printf("It is 2 to 9");break;
case 10: printf("It is 10");break;
}
这是什么case 1...9:
意思?是标准的吗?
这是一个名为case range的 GNU C 扩展。
http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html
如文档中所述,您必须在范围的低值和高值之间放置空格。
case 1 ... 9:
statement;
相当于:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
statement;
这是gcc extension
,他们通常gcc
至少解决这个问题的最简单方法是使用-pedantic
参数:
gcc -pedantic
会警告:
warning: range expressions in switch statements are non-standard [-pedantic]
如果您想检查特定标准,例如c99
,您可以执行以下操作:
gcc -std=c99 -pedantic
此外,这是不正确的:
case 1...9:
你需要点和数字之间的空格:
case 1 ... 9:
如文件中所述:
注意:在 ... 周围写空格,否则当您将它与整数值一起使用时可能会解析错误。