C语言switch case语句的case后面不能接范围?
首先一般来说,教科书或者大部分资料都是说case后面只能接整型常量或常量表达式。也确实在标准C中确实不能接范围表达式。
但是在开发中却碰见了case 1 … 3 (省略号两侧有空格)这种接范围的用法。
经查询可知,GNU C对标准作了扩展,支持case后接一个范围值。 具体可点击 Case Ranges 查看。
用GCC编译器编译此格式C程序运行通过。如下所示:
TieTouXiaoGe@tst-vps:~/demo$ cat demo.c
#include "stdio.h"
void main()
{
int TEST_COUNT;
scanf("%i", &TEST_COUNT);
switch (TEST_COUNT){
case 1 ... 3:
printf("successful...\n");
break;
case 4 ... 6:
printf("failed...\n");
break;
}
}
TieTouXiaoGe@tst-vps:~/demo$ gcc demo.c
TieTouXiaoGe@tst-vps:~/demo$ ./a.out
2
successful...
TieTouXiaoGe@tst-vps:~/demo$ ./a.out
5
failed...
TieTouXiaoGe@tst-vps:~/demo$ ls
a.out demo.c
TieTouXiaoGe@tst-vps:~/demo$