0

switch 语句

switch 和 case 语句用来表达数量较多的分支条件,语法如下:

switch(表达式)
{
    case常量表达式1:语句块1
    case常量表达式2:语句块2
    ......
    default:语句块n
}

:: tip 建议

switch 语句可以包含多个 case 条件,case 后面的常量表达式必须各不相同。
进入 switch 语句后,先计算表达式的值,然后逐一匹配每个 case 的常量表达式,当匹配成功时,就执行对应的语句块,然后顺序执行之后的所有语句,直到整个 switch 语句结束。

如果遇到一个 break 语句,则中止 switch 语句的执行。

如果表达式与所有的 case 都不能成功匹配,则从 default 后面的语句块开始执行,直到 switch 语句结束。

::

:: warning 警告 当和某个 case 常量表达式匹配成功后,程序会执行该 case 的语句或语句块,以及后面所有分支的语句。 ::

switch 语句示例

#include <iostream>
using namespace std;
int main(){
        int a;
    cout << "输入1-7之间的数字:";
    cin >> a;
    switch(a)
    {
        case 1:
            cout << "Monday " << endl;
        case 2:
            cout << "Tuesday " << endl;
        case 3:
            cout << "Wednesday " << endl;
        case 4:
            cout << "Thursday " << endl;
        case 5:
            cout << "Friday " << endl;
        case 6:
            cout << "Saturday " << endl;
        case 7:
            cout << "Sunday " << endl;
        default:
            cout << "error " << endl;
    }
    return 0;
}

运行结果:

输入1-7之间的数字:3Wednesday
Thursday
Friday
Saturday
Sunday
error

输入 3 后,与第三个 case 匹配成功后,执行第三个分支以及后面的所有语句。

但如果希望只执行第三个分支,输出“Wednesday”,而跳过后面的其他输出,那我们必须要在每个 case 的语句最后添加 break 语句。

break 是专门用于跳出类似 switch 的分支和其他循环结构的语句。
所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的其他语句,包括当前分支中的语句和其他分支中的语句。

我们使用 break 修改上面的代码后:

参考程序

#include <iostream>
using namespace std;
int main()
{
    int a;
    cout << "输入1-7之间的数字:";
    cin >> a;
    switch(a)
    {
        case 1:
            cout << "Monday " << endl;
            break;
        case 2:
            cout << "Tuesday " << endl;
            break;
        case 3:
            cout << "Wednesday " << endl;
            break;
        case 4:
            cout << "Thursday " << endl;
            break;
        case 5:
            cout << "Friday " << endl;
            break;
        case 6:
            cout << "Saturday " << endl;
            break;
        case 7:
            cout << "Sunday " << endl;
            break;
        default:
            cout << "error " << endl;
            break;
    }
    return 0;
}

运行结果:

输入1-7之间的数字:3Wednesday

default 负责处理不符合任何 case 的情况,而且 switch 语句中只能有一个 default 分支,它可以出现在开头或者最后,也可以出现在两个 case 的中间。

上一章
elif
下一章
iterative