大家都知道switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
很多情况下需要用到case区间判断,比如0-3的,大家可能回写成这样:
case 0:
case 1:
case 2:
case 3:
func();
break;
今天发现还有这种写法,用起来还是很有优势的,用的好可以减少写代码、编译等时间。
但是这个方法不一定在所有编译器下有效,我这边用的是gcc 4.8.5,代码如下没有问题。
#include <iostream>
int main(int argc, char* argv[])
{
int i = 5;
switch (i) {
case 0 ... 3:
std::cout << "0-3: " << i << std::endl;
break;
case 4 ... 6:
std::cout << "4-6: " << i << std::endl;
break;
case 7 ... 9:
std::cout << "7-9: " << i << std::endl;
break;
case 10:
std::cout << "10" << i << std::endl;
default:
break;
}
return 0;
}