C语言switch case语句的用法

在C语言中,应用条件语句 if-else 可以很方便地使程序实现两个分支,但是如果出现多个分支的情况,虽然可以使用 if-else 语句的嵌套,但是程序会显得比较复杂,不易阅读。

为了实现多个条件分支的选择,C语言提供了 switch case 开关语句。

其一般格式如下:
switch(表达式)                            //表达式的值只能在下面的 case 值表中出现一次
{
    case 值 1:语句序列 1;break;         //break 语句的功能是跳出 switch 语句,执行其后面的语句
    case 值 2:语句序列 2;break;
    case 值 3:语句序列 3;
    case 值 4:语句序列 4;               //如果没有 break 语句,则会自动继续执行后续 case 的语句序列
    ……
    case 值 n:语句序列 n;break;
    default:语句序列n+1;                  //default 部分是可选项
}

运行 switch 开关语句时,根据表达式的求值结果,选取{ }括号中的一个 case 分支开始执行。当表达式的值等于值 i 时,就执行 case 值 i 后面的语句序列 i。如果表达式的值没有出现在任何 case 后面,则执行 default 后面的语句序列 n+1。如果没有 default 部分,则结束 switch 语句,执行其后面的语句。

case 后面的值 i 的类型必须和表达式结果值的类型一致。

多个 case 可以共用一组语句序列,即某些 case 的语句序列可为空。比如:
switch(表达式)
{
    case 值 1:
    case 值 2:
    case 值 3:语句序列 3;
}

上述代码中,当表达式的值为值 1 或值 2 或值 3 时,执行相同的语句序列 3。

图 1 展示了 switch 开关语句的执行流程。

switch 开关语句的执行流程
图 1:switch 开关语句的执行流程