use*_*621 11 c switch-statement
我的逻辑是:
if number is between 1 to 10, execute first case statement
if number is from 20 to 30, execute second case statement
Run Code Online (Sandbox Code Playgroud)
有没有下面的解决方案?
case '1' ... '10':
case '20' ... '30':
Run Code Online (Sandbox Code Playgroud)
Bas*_*tch 21
switch(i) {
case 0 ... 9: return true;
default: return false;
}
Run Code Online (Sandbox Code Playgroud)
Clang/LLVM也接受此语言扩展.因此,如果您能够将代码限制在GCC和Clang编译器中,请使用它.
另请参见本.
我不知道为什么这个扩展没有包含在C11标准中.
void SwitchDemo(int value)
{
switch(value / 10)
{
case 0: ...; break; // 0 - 9
case 1: ...; break; // 10 - 19
...
}
}
Run Code Online (Sandbox Code Playgroud)
或者,具体到问题范围:
void SwitchDemo(int value)
{
switch((value-1) / 10)
{
case 0: ...; break; // 1 - 10
case 1: ...; break; // 11 - 20
...
}
}
Run Code Online (Sandbox Code Playgroud)
选项 1:使用case 0for 0-9、case 1for11-20等。
选项 2:使用if
选项 3:
另一种破旧的方法是使用这样的失败案例:
#include <stdio.h>
int main(void) {
int i=1;
for(i=1;i<=25;i++)
{
switch(i)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
printf("%d is in between 1-10\n", i);
break;
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
printf("%d is in between 11-20\n", i);
break;
default:
printf("%d is above 20\n", i);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
1 is in between 1-10
2 is in between 1-10
3 is in between 1-10
4 is in between 1-10
5 is in between 1-10
6 is in between 1-10
7 is in between 1-10
8 is in between 1-10
9 is in between 1-10
10 is in between 1-10
11 is in between 11-20
12 is in between 11-20
13 is in between 11-20
14 is in between 11-20
15 is in between 11-20
16 is in between 11-20
17 is in between 11-20
18 is in between 11-20
19 is in between 11-20
20 is in between 11-20
21 is above 20
22 is above 20
23 is above 20
24 is above 20
25 is above 20
Run Code Online (Sandbox Code Playgroud)