CASE expr_no_commas ELLIPSIS expr_no_commas ':'
我在c的语法规则中看到了这样的规则,但是当我尝试重现它时:
int test(float i)
{
switch(i)
{
case 1.3:
printf("hi");
}
}
失败了......
答案 0 :(得分:13)
好的,这涉及到我的一些猜测,但看起来您正在谈论C的gcc
扩展,它允许在switch
个案例中指定范围。
以下编译:
int test(int i)
{
switch(i)
{
case 1 ... 3:
printf("hi");
}
}
注意...
并注意您无法启用float
。
答案 1 :(得分:11)
这不是标准C,见6.8.4.2:
每个案例标签的表达 应该是一个整数常量 表达
答案 2 :(得分:8)
ELLIPSIS表示...
,而不是.
。声明应该是:
#include <stdio.h>
int main() {
int x;
scanf("%d", &x);
switch (x) {
case 1 ... 100:
printf("1 <= %d <= 100\n", x);
break;
case 101 ... 200:
printf("101 <= %d <= 200\n", x);
break;
default:
break;
}
return 0;
}
顺便说一句,这是一个non-standard extension of gcc
。在标准C99中我找不到这种语法。