原文: https://www.programiz.com/c-programming/c-switch-case-statement

在本教程中,您将通过一个示例学习在 C 编程中创建switch语句。

switch语句使我们可以执行许多替代方案中的一个代码块。

您可以使用if...else..if梯形图执行相同的操作。 但是,switch语句的语法更容易读写。


switch...case的语法

  1. switch (expression)
  2. {
  3. case constant1:
  4. // statements
  5. break;
  6. case constant2:
  7. // statements
  8. break;
  9. .
  10. .
  11. .
  12. default:
  13. // default statements
  14. }

switch语句如何工作?

expression进行一次求值,并与每个case标签的值进行比较。

  • 如果匹配,则执行匹配标签后的相应语句。 例如,如果表达式的值等于constant2,则执行case constant2:之后的语句,直到遇到break
  • 如果不匹配,则执行默认语句。

如果我们不使用break,则执行匹配标签之后的所有语句。

顺便说一下,switch语句内的default子句是可选的。


switch语句流程图

C `switch`语句 - 图1


示例:简单计算器

  1. // Program to create a simple calculator
  2. #include <stdio.h>
  3. int main() {
  4. char operator;
  5. double n1, n2;
  6. printf("Enter an operator (+, -, *, /): ");
  7. scanf("%c", &operator);
  8. printf("Enter two operands: ");
  9. scanf("%lf %lf",&n1, &n2);
  10. switch(operator)
  11. {
  12. case '+':
  13. printf("%.1lf + %.1lf = %.1lf",n1, n2, n1+n2);
  14. break;
  15. case '-':
  16. printf("%.1lf - %.1lf = %.1lf",n1, n2, n1-n2);
  17. break;
  18. case '*':
  19. printf("%.1lf * %.1lf = %.1lf",n1, n2, n1*n2);
  20. break;
  21. case '/':
  22. printf("%.1lf / %.1lf = %.1lf",n1, n2, n1/n2);
  23. break;
  24. // operator doesn't match any case constant +, -, *, /
  25. default:
  26. printf("Error! operator is not correct");
  27. }
  28. return 0;
  29. }

输出

  1. Enter an operator (+, -, *,): -
  2. Enter two operands: 32.5
  3. 12.4
  4. 32.5 - 12.4 = 20.1

用户输入的-运算符存储在operator变量中。 并且,两个操作数32.512.4分别存储在变量n1n2中。

由于operator-,因此程序控制跳至

  1. printf("%.1lf - %.1lf = %.1lf", n1, n2, n1-n2);

最后, break语句终止switch语句。