首页 > 你问我答 >

问 c 语言 case 的用法

2026-11-05 08:41:38
最佳答案

答

核心结论:case 是 C 语言里面 switch 分支语句的关键字,作用是匹配 switch 括号里的整型 / 字符型表达式的值,匹配成功就执行对应 case 后面的代码,必须搭配 switch 使用,每个 case 后面一般要写 break 跳出,不然会发生穿透,继续执行后面 case 的代码,末尾还可以写 default 处理所有都不匹配的情况。

原因

  1. switch 属于多分支选择结构,适合多选一场景,相比多层 if else,分支更多时代码可读性更好。
  2. case 后面只能是整型常量或者字符常量,不能写变量、浮点型、区间表达式。
  3. break 的作用就是终止 switch,如果漏掉 break,程序会从匹配的 case 一直往下执行,这个特性叫 case 穿透,有时候可以主动利用这个特性。

基础语法格式

switch(表达式)

{

case 常量1:

语句;

break;

case 常量2:

语句;

break;

default:

语句;

break;

}

基础示例代码

include

int main()

{

int num = 2;

switch(num)

{

case 1:

printf("数字是1\n");

break;

case 2:

printf("数字是2\n");

break;

case 3:

printf("数字是3\n");

break;

default:

printf("没有匹配到\n");

}

return 0;

}

重点:case 穿透(主动利用)

多个 case 执行相同代码的时候,可以省略中间 break,实现合并分支:

switch(score)

{

case 'A':

case 'a':

printf("优秀\n");

break;

case 'B':

case 'b':

printf("良好\n");

break;

}

上面代码,不管是 A 还是 a,都会执行优秀,这就是利用 case 穿透。

使用步骤

  1. 确定需要多分支判断,判断值是整型、char 字符类型,适合使用 switch+case。
  2. 编写 switch 括号内表达式,表达式计算结果类型必须是整型或者字符型。
  3. 逐个写 case,case 后面写冒号,填写常量值。
  4. 根据需求,分支独立就加上 break;多个分支共用代码就省略 break 实现穿透。
  5. 增加 default 分支,处理所有 case 都匹配失败的情况,default 可以省略,但是推荐写上。
  6. 编译运行测试,检查是否出现意外穿透 bug。

重要限制清单

  • case 后面不能写变量,只能常量
  • case 不能写范围,比如 case 1~5 是错误写法
  • case 后面不能是浮点数,比如 case 3.14 报错
  • 多个 case 的常量值不能重复,否则编译报错

常见问题 FAQ

问题 1:c 语言 case 后面一定要加 break 吗?

回答 1:c 语言 case 不是必须加 break,不加就会 case 穿透,一直执行后面代码,如果需要独立分支,就必须写 break。

问题 2:c 语言 case 可以用字符串吗?

回答 2:c 语言 case 不能直接匹配字符串,switch 只支持整型字符型,字符串匹配一般要用 if else。

问题 3:c 语言 case 里面可以定义变量吗?

回答 3:c 语言 case 里面可以定义变量,但是推荐加大括号 {} 包裹,避免变量作用域因为穿透产生编译报错。

问题 4:c 语言 default 可以放在最前面吗?

回答 4:c 语言 default 语法上可以放在任意位置,但是常规习惯写在最后,放前面如果没有 break 依然会穿透执行后续 case。

免责申明

本文为 C 语言基础语法讲解,不同编译器标准(C89/C99/C11)细节存在细微差异,内容仅供学习参考。