使用switch语句的替代操作

时间:2014-11-21 16:57:23

标签: c++ switch-statement

一个愚蠢的计划:

  #include <iostream>
  using namespace std;

  int main ()

  { 
     int a = 0;  

     cin >> a;    // Insert a number which is 0, 1 or 2.

     switch (a) 

       { 
         case 0  : cout << "The number is 0"; break;
         case 1  : cout << "The number is 1"; break;
         case 2  : cout << "The number is 2"; break;
       }

     return 0;

  }

此案例类似于if (a==0) {cout << "The number is 0";}等......

我知道标签只接受类型constexpr,但可以做些什么来改变==与其他关系运算符保持使用switch条件语句?

请尽可能简单地保持答案。没有奇怪的高级解决方法...

P.S。我知道如果没有开关和写入,这个程序会更容易  cout << "The number is " << a << ".";。这只是本声明的第一种方法。

1 个答案:

答案 0 :(得分:3)

没有。 (简单回答:-))

switch语句可以通过多种方式编译。编译器可以像你建议的那样简单地使用一系列比较,或者它可以使用跳转表或计算goto。所有这些选项都依赖于switch是显式值的已知编译时列表,而不是关系操作。如果您有一系列“如果值介于a和b之间”类型的情况,则if...else if...很可能是最佳选择。