ass*_*sem 4 c switch-statement
CASE expr_no_commas ELLIPSIS expr_no_commas ':'
Run Code Online (Sandbox Code Playgroud)
我在c的语法规则中看到了这样的规则,但是当我尝试重现它时:
int test(float i)
{
switch(i)
{
case 1.3:
printf("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
它失败...
NPE*_*NPE 14
好吧,这涉及到我的一些猜测,但看起来你正在谈论gccC 的扩展,允许人们在switch案例中指定范围.
以下编译对我来说:
int test(int i)
{
switch(i)
{
case 1 ... 3:
printf("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
请注意...并注意您无法打开float.
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;
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这是一个非标准的扩展gcc.在标准C99中我找不到这种语法.