我看到了一些像这样的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:
是什么意思?它很标准吗?
答案 0 :(得分:7)
这是一个名为案例范围的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;
答案 1 :(得分:1)
这是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:
如document中所述:
注意:在...周围写一些空格,否则在使用整数值时可能会解析错误。