C语言switch case语句的用法(小白必读)
虽然 C语言没有限制 if else 语句能够处理的分支数量,但当分支过多时,用 if else 语句处理会不太方便,而且容易出现 if 和 else 配对出错的情况。
相对而言,switch case 语句的语法更容易读写。
switch case 语句的格式如下:
【实例】简易计算器,先输入 +、−、*、/ 4个运算符中的一个,然后输入两个浮点数,最后输出计算结果。代码如下:

图 1 程序的执行流程
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
相对而言,switch case 语句的语法更容易读写。
switch case 语句的格式如下:
switch(expression) {
case constant1: //分支
语句;
break;
case constant2: //分支
语句;
break;
...
default: //默认语句
语句;
}
switch case 的具体工作原理如下:
- switch 语句中的 expression 是一个常量表达式,必须是一个整型、字符型或枚举类型。
- 在一个 switch 语句中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
- case 语句中的 constant 必须与 switch 语句中的 expression 具有相同的数据类型,且必须是一个常量或字符量。
- 当被判断的 expression 等于 case 语句中的 constant 时,case 语句后面的语句将被执行,直到遇到 break 语句为止。
- 当遇到 break 语句时,switch case 终止,控制流继续执行 switch case 后面的代码。
- 不是每一个 case 语句都需要包含 break 语句,如果 case 语句不包含 break 语句,控制流将会继续执行后续的 case 语句,直到遇到 break 语句为止。
- 一个 switch 语句可以有一个可选的 default case 语句,出现在 switch 语句的结尾。default case 语句可用于在上面所有 case 语句都不为真时执行一个任务。default case 语句中的 break 语句不是必需的。
【实例】简易计算器,先输入 +、−、*、/ 4个运算符中的一个,然后输入两个浮点数,最后输出计算结果。代码如下:
#include <stdio.h>
int main()
{
char operator;
double n1, n2;
printf("输入一个运算符 (+, -, *, /): ");
scanf("%c", &operator);
printf("输入两个操作数: ");
scanf("%lf %lf", &n1, &n2);
switch (operator)
{
case '+':
printf("%.1lf + %.1lf = %.1lf", n1, n2, n1 + n2);
break;
case '-':
printf("%.1lf - %.1lf = %.1lf", n1, n2, n1 - n2);
break;
case '*':
printf("%.1lf * %.1lf = %.1lf", n1, n2, n1 * n2);
break;
case '/':
printf("%.1lf / %.1lf = %.1lf", n1, n2, n1 / n2);
break;
// 没有匹配到任何运算符( +, -, *, /)
default:
printf("错误! 运算符不正确");
}
return 0;
}
编译运行,可得到以下类似结果:
输入一个运算符(+, -, *,/): +
输入两个操作数:10 20
10.0+20.0=30.0

图 1 程序的执行流程
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。