c语言switch怎么用

来源:站长素材作者:樱由罗头衔:网络博主
导读:本期聚焦于小伙伴创作的《c语言switch怎么用》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《c语言switch怎么用》有用,将其分享出去将是对创作者最好的鼓励。

在C语言编程中,switch语句是用于处理多分支选择场景的常用语法结构,它能够根据一个整型或枚举类型的表达式取值,跳转到对应的分支执行代码,相比多层嵌套的if else语句,代码结构更清晰,可读性更强。下面我们详细介绍它的使用方法。

c语言switch怎么用

switch语句的基本语法

switch语句的基本结构如下:

switch (表达式) {
    case 常量1:
        // 当表达式的值等于常量1时执行的代码
        语句1;
        break;
    case 常量2:
        // 当表达式的值等于常量2时执行的代码
        语句2;
        break;
    // 可以有多个case分支
    default:
        // 当表达式的值不匹配任何case常量时执行的代码
        语句n;
        break;
}

其中各个部分的含义如下:

  • 表达式:必须是整型(包括char类型,因为char本质也是整型)或者枚举类型,不能是浮点型、字符串等非整型类型。
  • case 常量:每个case后面必须跟一个整型常量或者常量表达式,且各个case的常量值不能重复。
  • break:用于跳出整个switch语句,如果不写break,程序会继续执行下一个case分支的代码,直到遇到break或者switch结束。
  • default:可选分支,当表达式的值不匹配任何case的常量时,会执行default下的代码,default可以放在switch结构的任意位置,通常放在所有case的最后。

简单使用示例

下面通过一个判断成绩等级的例子来展示switch的基本用法,根据输入的分数段输出对应的等级:

#include <stdio.h>

int main() {
    int score;
    printf("请输入分数(0-100):");
    scanf("%d", &score);
    
    // 将分数除以10得到整型结果,简化case分支
    int level = score / 10;
    switch (level) {
        case 10:
        case 9:
            printf("成绩等级为:An");
            break;
        case 8:
            printf("成绩等级为:Bn");
            break;
        case 7:
            printf("成绩等级为:Cn");
            break;
        case 6:
            printf("成绩等级为:Dn");
            break;
        default:
            printf("成绩等级为:En");
            break;
    }
    return 0;
}

这个例子中,当输入的分数是95时,level的值为9,匹配case 9的分支,输出等级A;如果输入的分数是82,level为8,匹配case 8的分支,输出等级B。这里case 10和case 9没有写执行语句和break,是因为它们会共用case 9下面的执行逻辑,这是switch语句中常见的省略写法。

break的作用演示

如果去掉break会发生什么?我们看下面的示例:

#include <stdio.h>

int main() {
    int num = 2;
    switch (num) {
        case 1:
            printf("执行case 1n");
        case 2:
            printf("执行case 2n");
        case 3:
            printf("执行case 3n");
        default:
            printf("执行defaultn");
    }
    return 0;
}

运行这个程序,输出结果会是:

执行case 2
执行case 3
执行default

这是因为当num等于2匹配到case 2之后,由于没有break,程序会继续往下执行case 3和default的代码,这种现象叫做case穿透。在实际开发中,除非有特殊需求,否则每个case分支末尾都需要加上break来避免不必要的穿透。

使用注意事项

  • switch后面的表达式类型只能是整型或者枚举类型,不能是float、double、char*等类型,比如switch(3.14)这种写法是错误的。
  • case后面的必须是常量,不能是变量或者变量表达式,比如case score或者case a+1(a是变量)都是错误的。
  • default分支不是必须的,如果没有default,且所有case都不匹配,那么整个switch语句不会执行任何代码。
  • switch语句可以嵌套使用,内层的switch和外层的switch之间不会相互影响,case和default标签只在其所属的switch块内有效。

嵌套switch示例

下面展示一个简单的嵌套switch用法:

#include <stdio.h>

int main() {
    int type = 1;
    int sub_type = 2;
    switch (type) {
        case 1:
            printf("当前类型为1n");
            switch (sub_type) {
                case 1:
                    printf("子类型为1n");
                    break;
                case 2:
                    printf("子类型为2n");
                    break;
                default:
                    printf("未知子类型n");
            }
            break;
        case 2:
            printf("当前类型为2n");
            break;
        default:
            printf("未知类型n");
    }
    return 0;
}

这个程序中,外层switch匹配type为1的分支,然后进入内层的switch判断sub_type的值,最终会输出当前类型为1和子类型为2的内容。

switchcasebreakdefault修改时间:2026-06-16 18:21:31

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。