A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© goobag 中级黑马   /  2014-4-30 19:32  /  1783 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

if-else一般表示两个分支或是嵌套表示少量的分支,但如果分支很多的话……得用switch、case组合。

其基本格式为:

switch(variable)
{
case Value1:
        //program code
        break;
case Value2:
        //program code
        break;
case Value3:
        //program code
        break;



default:
        break;
}

这里有一些需要注意的问题:

1.每个case语句最后都要加上break语句。这样才能保证switch语句的真正意义,否则将倒是多个case语句被执行,而这不是我们需要的。其实有的情况下恰恰需要省略break语句,比如比较常见的统计成绩是60分以下输出不及格,[60,70)输出及格......

switch(score%10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
        printf("不及格\n");
        break;
case 6:
        printf("及格\n");
        break;
...

default:

        break;

}
score在[0,60)之间的操作都是输出不及格,所以在case 5才执行相应的操作。这样做可能会影响效率,假如匹配的是case 0,那么到case 5之间的操作都会被执行,而这些是不必要的,其实里面也没什么操作,可能只是些比较吧。如果是这样的情况呢?假如连续的100个case语句处理的情况都一样,那每个case语句都要写上相应的语句,那工作量不就大了吗?估计这样的情况应该很少吧!肯定有更好的办法来处理。

2. 最后必须使用default分支。
        default分支可以处理一些异常,如果没有default分支,一旦switch里的值不在所有的case里,程序没法继续执行下去。所以default对增强程序的健壮性很有用。有的书上写着最后一个default语句里面也要加上break语句,具体什么原因,我也不知道。不过老感觉没什么必要了,因为后面也没有其他语句了啊!不知道有没有其他的见解。

3. case后面只能是整型或字符型的常量或常量表达式。这是规定吧,记得就行!

4. 按字母或数字顺序排列各条case语句,这是规范吧!

5. 把正常情况放在前面,把异常情况放在后面。
        这样可以减少比较的次数,提高效率。

6. 按执行频率排列case语句,把命中率高的排在前面。
        这样做也可以减少比较次数,提高效率。

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

2 个回复

倒序浏览
学习了 挺详细的
回复 使用道具 举报
好东西 谢谢    收藏了  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马