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

在本教程中,我们将借助一些示例来学习switch语句及其在 C++ 编程中的工作。

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

C++ 中switch语句的语法为:

  1. switch (expression) {
  2. case constant1:
  3. // code to be executed if
  4. // expression is equal to constant1;
  5. break;
  6. case constant2:
  7. // code to be executed if
  8. // expression is equal to constant2;
  9. break;
  10. .
  11. .
  12. .
  13. default:
  14. // code to be executed if
  15. // expression doesn't match any constant
  16. }

switch语句如何工作?

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

  • 如果匹配,则执行匹配标签后的相应代码。 例如,如果变量的值等于constant2,则执行case constant2:之后的代码,直到遇到break语句。
  • 如果不匹配,则执行default:之后的代码。

注意:我们可以使用if...else..if梯形图执行相同的操作。 但是,switch语句的语法更简洁,更易于读写。


switch语句流程图

C   `switch..case`语句 - 图1

C++ switch...case语句的流程图


示例:使用switch语句创建计算器

  1. // Program to build a simple calculator using switch Statement
  2. #include <iostream>
  3. using namespace std;
  4. int main() {
  5. char oper;
  6. float num1, num2;
  7. cout << "Enter an operator (+, -, *, /): ";
  8. cin >> oper;
  9. cout << "Enter two numbers: " << endl;
  10. cin >> num1 >> num2;
  11. switch (oper) {
  12. case '+':
  13. cout << num1 << " + " << num2 << " = " << num1 + num2;
  14. break;
  15. case '-':
  16. cout << num1 << " - " << num2 << " = " << num1 - num2;
  17. break;
  18. case '*':
  19. cout << num1 << " * " << num2 << " = " << num1 * num2;
  20. break;
  21. case '/':
  22. cout << num1 << " / " << num2 << " = " << num1 / num2;
  23. break;
  24. default:
  25. // operator is doesn't match any case constant (+, -, *, /)
  26. cout << "Error! The operator is not correct";
  27. break;
  28. }
  29. return 0;
  30. }

输出 1

  1. Enter an operator (+, -, *, /): +
  2. Enter two numbers:
  3. 2.3
  4. 4.5
  5. 2.3 + 4.5 = 6.8

输出 2

  1. Enter an operator (+, -, *, /): -
  2. Enter two numbers:
  3. 2.3
  4. 4.5
  5. 2.3 - 4.5 = -2.2

输出 3

  1. Enter an operator (+, -, *, /): *
  2. Enter two numbers:
  3. 2.3
  4. 4.5
  5. 2.3 * 4.5 = 10.35

输出 4

  1. Enter an operator (+, -, *, /): /
  2. Enter two numbers:
  3. 2.3
  4. 4.5
  5. 2.3 / 4.5 = 0.511111

输出 5

  1. Enter an operator (+, -, *, /): ?
  2. Enter two numbers:
  3. 2.3
  4. 4.5
  5. Error! The operator is not correct.

在上面的程序中,我们使用switch...case语句执行加法,减法,乘法和除法。

本程序的工作方式

注意,在每个case块中都使用了break语句。 这将终止switch语句。

如果不使用break语句,则将执行正确的case之后的所有情况。

  1. 我们首先提示用户输入所需的运算符。 然后,此输入存储在名为operchar变量中。
  2. 然后,我们提示用户输入两个数字,它们存储在浮点变量num1num2中。
  3. 然后,switch语句用于检查用户输入的运算符:

    • 如果用户输入+,则对数字进行加法运算。
    • 如果用户输入-,则对数字进行减法。
    • 如果用户输入*,则对数字进行乘法。
    • 如果用户输入/,则对数字进行除法。
    • 如果用户输入任何其他字符,则将打印默认代码。