ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# C `switch`语句 > 原文: [https://www.programiz.com/c-programming/c-switch-case-statement](https://www.programiz.com/c-programming/c-switch-case-statement) #### 在本教程中,您将通过一个示例学习在 C 编程中创建`switch`语句。 `switch`语句使我们可以执行许多替代方案中的一个代码块。 您可以使用`if...else..if`梯形图执行相同的操作。 但是,`switch`语句的语法更容易读写。 * * * ## `switch...case`的语法 ```c switch (expression) ​{ case constant1: // statements break; case constant2: // statements break; . . . default: // default statements } ``` **`switch`语句如何工作?** 对`expression`进行一次求值,并与每个`case`标签的值进行比较。 * 如果匹配,则执行匹配标签后的相应语句。 例如,如果表达式的值等于`constant2`,则执行`case constant2:`之后的语句,直到遇到`break`。 * 如果不匹配,则执行默认语句。 如果我们不使用`break`,则执行匹配标签之后的所有语句。 顺便说一下,`switch`语句内的`default`子句是可选的。 * * * ### `switch`语句流程图 ![Flowchart of switch statement](https://img.kancloud.cn/aa/66/aa66eb3151177c3b5afb7c614fb826b4_460x662.png "switch Statement Flowchart") * * * ### 示例:简单计算器 ```c // Program to create a simple calculator #include <stdio.h> int main() { char operator; double n1, n2; printf("Enter an operator (+, -, *, /): "); scanf("%c", &operator); printf("Enter two operands: "); 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; // operator doesn't match any case constant +, -, *, / default: printf("Error! operator is not correct"); } return 0; } ``` **输出** ```c Enter an operator (+, -, *,): - Enter two operands: 32.5 12.4 32.5 - 12.4 = 20.1 ``` 用户输入的`-`运算符存储在`operator`变量中。 并且,两个操作数`32.5`和`12.4`分别存储在变量`n1`和`n2`中。 由于`operator`为`-`,因此程序控制跳至 ```c printf("%.1lf - %.1lf = %.1lf", n1, n2, n1-n2); ``` 最后, [`break`语句](/c-programming/c-break-continue-statement)终止`switch`语句。