Hit*_*mus -2 c case switch-statement
我想在我的代码中创建一个switch语句,其代码遍及大范围的整数(1-15000),分为3个部分:1-5000,5001-10000,10001-15000.
我试过这样一次:
switch(number) {
case 1 ... 1000: (statement here);
Run Code Online (Sandbox Code Playgroud)
这给了我一个关于"......"的语法错误 - "预期的a:".
然后我尝试了:
switch (number) {
case 1:
case 5000:
(statement);
break;
Run Code Online (Sandbox Code Playgroud)
这个方法确实编译但是没有按预期工作,对于没有明确列出的案例的错误答案.
在网上找不到任何其他建议.有人可以帮忙吗?
这在标准C中是不可能的,尽管一些编译器提供了作为编译器扩展1的范围切换.
在你的情况下,惯用的方式是写
if (number < 1){
// oops
} else if (number <= 5000){
// ToDo
} else if (number <= 10000){
// ToDo
} else if (number <= 15000){
// ToDo
} else {
// oops
}
Run Code Online (Sandbox Code Playgroud)
或者一种非常粗略的方式是编写switch((number - 1) / 5000)利用整数除法:将需要处理的案例映射到0,1和2.
1 https://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html