C++ switch case语句讲解

2020-01-06 12:07:42于海丽
我们已经了解,if……else……可以用来描述一个“二岔路口”,我们只能选择其中一条路来继续走。然而,有时候我们会遇到一些“多岔路口”的情况,用if……else……语句来描述这种多岔路口会显得非常麻烦,而且容易把思路搅浑。比如程序4.2.2就是一个用if……else……语句描述的四岔路口(四种操作符),整个程序占据了将近一页。

如果我们把这些多岔路看作电路,那么用if……else……这种“普通双向开关”来选择某一条支路就需要设计一套很复杂的选路器。所以最简便的选路方法当然是做一个像下图那样的开关。(图4.4.1)

在C++中,也有这样的开关,那就是switch语句。它能够很简捷地描述出多岔路口的情况。具体的语法格式为:
C++ switch case语句讲解
switch(表达式)
{
   case 常量表达式1:
   {
      语句块1;
      break;
   }
   ……
   case 常量表达式n:
   {
      语句块n;
      break;
   }
   default:
   {
      语句块n+1;
   }
}

在switch语句中,我们要记住四个关键词,分别是switch、case、default和break。switch是语句的特征标志(图中标作sw);case表示当switch后的表达式满足某个case后的常量时,运行该case以后的语句块。要注意,任意两个case后的常量不能相等,否则switch将不知道选择哪条路走。default表示当表达式没有匹配的case时,默认(default)地运行它之后的语句块(图4.4.1中未标出);break表示分岔路已经到头,退出switch语句。

下面,我们就来用switch语句来改写程序4.2.2。箭头表明遇到break以后的运行情况。
#include "iostream.h"
int main()
{
   float a,b;
   char oper;
   cout <<"请输入一个表达式(eg.1+2):" <<endl;
   cin >>a >>oper >>b;
   switch (oper)
   {
      case '+':
      {
         cout <<a <<oper <<b <<'=' <<a+b <<endl;
         break;
      }
      case '-':