switch、case
上一期讲了if、else语句。既然有了if、else,为什么还要switch、case组合呢?
通过if else的嵌套确实能够实现switch case的功能。但有时候往往使用switch会使整个代码的流程更加简洁清晰。使用switch的基本格式为:
switch(variable)
{
case Value1:
//code
break;
case Value2:
//code
break;
case Value3:
//code
break;
···
default
//code:
break;
}
【规则1】每个case后面记得加break
每个case的结尾记得加break , 否则将会导致多个分支重叠的情况。
不过,有时候可以有意地利用swtich的这种特性,表达出一些采用其他方法很难表达出来的程序控制结构。比如一些比较大的switch分支,我们常常会发现一些分支的处理大同小异。只要稍微改动一点点,剩下的部分就完全等同于另一个分支情况下的处理。(建议如果要这样使用,请添加注释说明自己的意图)
【规则2】最后必须使用default分支
即使程序真的不需要default处理,也应该保留如下语句:
default:
break;
这样做并非画蛇添足,可以避免别人误以为你忘记了default处理。
【规则3】case关键字后面的值有什么要求吗?
Value1的值为 0.1行吗?-0.1呢?(0.1+0.9)呢?‘A’呢?“A”呢?
请自己上机调试下,到底哪行,哪些不行。
记住,case后面只能是一个固定的整型(或枚举)或者字符型常量,或者常量表达式,不能加一个范围或者不等式。
【规则4】case语句排列顺序
似乎很少有人考虑这个问题。但是如果case涉及到的分支特别多,那就不得不考虑到这个问题了。
建议:把正常的情况放在前面,把异常的情况放在后面,并且在中间写好注释,或者按照执行频率来排列。最常执行的代码,可能也是调试的时候单步执行最多的代码。如果放在后面,找起来可能比较困难。