6

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

4

2 回答 2

8

这是一个名为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;
于 2013-07-17T12:27:47.373 回答
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:

文件中所述:

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

于 2013-07-17T12:33:03.953 回答