问题描述
switch-case属于选择判断,if-else属于范围判断。对于既有精确条件又有范围条件的混合使用场景应该如何处理呢?当然选择“我都要”。
解决方案
将if嵌套放在default分支中。
例如:从1-100中抽取5,9-11,16,21-34号
//num:输入序号
//若num符合条件输出"true",否则输出"false"
switch (num) {
case 5:
printf("true");
break;
case 9:
case 10:
case 11:
printf("true");
break;
case 16:
printf("true");
break;
default:
if(num>=21 && num<=34)
printf("true");
else
printf("false");
break;
}
性能评估
如果case连续集中的话为表索引,综合性能有所提升;如果case较少且稀疏则与多重if-else无差别。个人认为这种方式代码更加整洁易读。
有时间再上代码