2013-07-17 83 views
6

我看到一些C代码: INT检查= 10:C语言中这种switch case的语法是什么意思?

switch(check) { 
      case 1...9: printf("It is 2 to 9");break; 
      case 10: printf("It is 10");break; 
} 

是什么case 1...9:是什么意思?它是否被禁止?

+0

谢谢你男人,我基本上可以猜出这是什么意思,但我需要得到证实,并知道这是否是有标准的? – user2131316

+1

@ user2131316正如我在下面指出的,你可以使用'gcc -std = c99 -pedantic'来检查特定的标准 –

回答

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; 
+0

好的,谢谢,但是这个GNU C是标准C还是由C99支持? – user2131316

+0

据我所知,1 ... 9是一个语法错误,需要一个空格。 –

+0

@ user2131316 GNU C不是C.它是C. – ouah

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指出:

小心:在...周围写空格,否则在整数值中使用它时可能会解析错误。