我想在我的代码中创建一个switch语句,其代码遍及大范围的整数(1-15000),分为3个部分:1-5000,5001-10000,10001-15000。
我试过这样一次:
switch(number) {
case 1 ... 1000: (statement here);
这给了我一个关于“......”的语法错误 - “期待的a:”。
然后我尝试了:
switch (number) {
case 1:
case 5000:
(statement);
break;
这个方法确实编译但是没有按预期工作,对于没有明确列出的案例的错误答案。
在网上找不到任何其他建议。 有人可以帮忙吗?
答案 0 :(得分:7)
这在标准C中是不可能的,尽管有些编译器提供了作为编译器扩展 1 的范围切换。
在你的情况下,惯用的方法是写
if (number < 1){
// oops
} else if (number <= 5000){
// ToDo
} else if (number <= 10000){
// ToDo
} else if (number <= 15000){
// ToDo
} else {
// oops
}
或者非常粗略的方法是编写利用整数除法的switch((number - 1) / 5000)
:将需要处理的案例映射到0,1和2。
答案 1 :(得分:1)
正如@UnholySheep在评论中所说,你不能这样做。不符合标准C.尝试使用if:
if (my_variable >= minumum_value && my_variable <= maximum_value) {
// Do something
} else {
// Do something else
}