5-2 多分支结构的另一种形式:switch 语句
本节编程练习不计算学习进度,请电脑登录imooc.com操作

多分支结构的另一种形式:switch 语句

C++ 中的 switch case 为我们提供了更加灵活的多分支语句,先来看一个程序:

#include <stdio.h>

int main(int argc, char **argv)
{
    int s = 5;
    switch (s) {
        case 1:
            printf("1\n");
        case 2:
            printf("2\n");
        case 3:
            printf("3\n");
        case 4:
            printf("4\n");
        case 5:
            printf("5\n");
        case 6:
            printf("6\n");
        case 7:
            printf("7\n");
        case 8:
            printf("8\n");
        case 9:
            printf("9\n");
        case 10:
            printf("10\n");
        default:
            printf("unknow\n");
    }
    return 0;
}

switch 接受了一个变量 s,然后使用 case 语句,判断变量 s 和哪个常量相等(case 后面只能是常量)。如果都不相等,那么执行 default 后面的语句。

我们来执行一下这个程序看看,运行结果如下:

5
6
7
8
9
10
unknow

执行的结果似乎和我们预期的结果有出入, switch 在匹配到 5 的 case 之后,不但执行了 5 的 case 从句,还把 5 之后所有的 case 从句连同 default 从句一起输出了。

这就是 switch case 的特殊的地方,他在匹配到相应的 case 之后,会将后面所有的 case 从句都执行一次,直到碰到一个 break 语句。如果想让这段程序符合预期,我们就要这么写:

#include <stdio.h>

int main(int argc,char **argv)
{
    int s = 5;
    switch (s) {
        case 1:
            printf("1\n");
            break;
        case 2:
            printf("2\n");
            break;
        case 3:
            printf("3\n");
            break;
        case 4:
            printf("4\n");
            break;
        case 5:
            printf("5\n");
            break;
        case 6:
            printf("6\n");
            break;
        case 7:
            printf("7\n");
            break;
        case 8:
            printf("8\n");
            break;
        case 9:
            printf("9\n");
            break;
        case 10:
            printf("10\n");
            break;
        default:
            printf("unknow\n");
    }
    return 0;
}

任务

  1.  
下一节