从零开始的嵌入式生活:switch case语句详解

一、switch case 语句的认知

      switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句。

它的执行过程是:

1) 首先计算“表达式”的值(表达式必须是一个整型char、short, int, long 等 或枚举类型),假设为 m。

2) 从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,执行完成则跳出switch语句。

3)break 是C语言中的一个关键字,专门用于跳出 switch 语句。所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。

4)default是C语言的关键字,当输入的值无法匹配case所有后面的值时,将执行default后面的语句块。

除了case 后面是整型数,还可以是字符。

例如:

#include <stdio.h>

int main(void)
{

    int data;

    printf("请输出一个整数:");
    scanf("%d", &data);

    switch (data)
    {
        case 1:
            printf("Monday\n");
            break;

        case 2:
            printf("Tuesday\n");
            break;

        case 3:
             printf("Wednesday\n");
            break;

         case 4:
           printf("Thursday\n");
            break;

        case 5:
             printf("Friday\n");
            break;

        case 6:
            printf("Saturday\n");
            break;          

         case 7:
            printf("Sunday\n");
            break;   

        default:
            printf("error\n");

            break;
    }

    return 0;
}

那么想要实现相同功能下,如果我们用if语句来进行编写的话,我们的代码将会是:

#include <stdio.h>

int main(void)
{

    int data;

    printf("请输出一个整数:");
    scanf("%d", &data);


    if(data == 1)
    {
        printf("Monday\n");
    }
    else if(data == 2)
    {
        printf("Tuesday\n");
    }
    else if(data == 3)
    {
        printf("Wednesday\n");
    }
    else if(data == 4)
    {
        printf("Thursday\n");
    }
    else if(data == 5)
    {
        printf("Friday\n");
    }
    else if(data == 6)
    {
        printf("Saturday\n");
    }
    else if(data == 7)
    {
        printf("Sunday\n");
    }
    else
    {
        printf("error\n");

    }

    return 0;
}

二、switch-case语句中的break

例如:

#include <stdio.h>

int main(void)
{

    int data;

    printf("请输出一个整数:");
    scanf("%d", &data);

    switch (data)
    {
        case 1:
            printf("Monday\n");
            break;

        case 2:
            printf("Tuesday\n");
           

        case 3:
             printf("Wednesday\n");
            break;

         case 4:
           printf("Thursday\n");
           

        case 5:
             printf("Friday\n");
            break;

        case 6:
            printf("Saturday\n");
                

         case 7:
            printf("Sunday\n");
            break;   

        default:
            printf("error\n");

            break;
    }

    return 0;
}

那么假设,分别输入2 3 4 5,输出结果为多少?

2:
Tuesday
Wednesday
3:
Wednesday
4:
Thursday
Friday
5:
Friday

如果“整型数值”和 data 不相等,就跳过冒号后面的“语句”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 data 和“整型数值2相等,那么就会从“语句2”一直执行到有break,才会跳出switch。如果没有写 break,会执行下一个 case 语句块,直到遇到 break 或者执行到 switch 结尾, 这个现象称为穿透。

三、switch细节总结:

1)switch 语句中的 expression 是一个常量表达式,必须是一个整型(char、short, int, long 等,不包括小数点) 或枚举类型

2)case 子句中的值必须是常量,而不能是变量

3)default 子句是可选的,当没有匹配的 case 时,执行 default

4)break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;

5)如果没有写 break,会执行下一个 case 语句块,直到遇到 break 或者执行到 switch 结尾, 这个现象称为穿透.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值