C零基础课程-16-switch分支语句


视频地址: https://www.bilibili.com/video/av73222096

switch分支语句的基本语法

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

switch后接的表达式的值,如果匹配之后的case常量,则跳转到对应的语句块并执行。如果全部case都不匹配,则跳转到default中的语句块执行。
简单例子:

#include <stdio.h>

int main(int argc, char* argv[])
{
    int nValue = 0;
    scanf("%d", &nValue);
    switch (nValue)
    {
    case 0:
        printf("case 0\r\n");
        break;
    case 5:
        printf("case 5\r\n");
        break;
    case 7:
        printf("case 7\r\n");
        break;
    case 8:
        printf("case 8\r\n");
        break;
    case 10:
        printf("case 10\r\n");
        break;
    default:
        printf("没有case常量匹配,进入default流程\r\n");
        break;
    }
 return 0;
}

break的作用

如果各个语句块最后没有break的话,则流程不会跳出switch,而是按顺序执行之后的语句。

int main(int argc, char* argv[])
{
    int nValue = 0;
    scanf("%d", &nValue);
    switch (nValue)
    {
    case 0:
        printf("case 0\r\n");
        break;
    case 5:
        printf("case 5\r\n");
    case 7:
        printf("case 7\r\n");
    case 8:
        printf("case 8\r\n");
        break;
    case 10:
        printf("case 10\r\n");
        break;
    default:
        printf("没有case常量匹配,进入default流程\r\n");
        break;
    }
 return 0;
}

甚至,我们可以将多个case写在一起,对应同一个语句块:

#include <stdio.h>

int main(int argc, char* argv[])
{
    char chValue = 0;
    scanf("%c", &chValue);
    switch (chValue)
    {
    case ' ':case ',':case ';':
        printf("空格、逗号、分号都算分隔符\r\n");
        break;
    default:
        printf("没有case常量匹配,进入default流程\r\n");
        break;
    }
 return 0;
}

switch与if两种分支语句的比较

  • if后可接任意表达式,但是switch后只能接整型表达式(或者能转换为整型的表达式)
  • switch更简洁
  • 同等复杂度的情况下,编译后的效率,switch的效率一般不低于if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值