切换案例的这种语法在C中意味着什么?

时间:2013-07-17 12:26:23

标签: c switch-statement

我看到了一些像这样的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:是什么意思?它很标准吗?

2 个答案:

答案 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中所述:

  

注意:在...周围写一些空格,否则在使用整数值时可能会解析错误。