一个愚蠢的计划:
#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 << ".";
。这只是本声明的第一种方法。
答案 0 :(得分:3)
没有。 (简单回答:-))
switch
语句可以通过多种方式编译。编译器可以像你建议的那样简单地使用一系列比较,或者它可以使用跳转表或计算goto。所有这些选项都依赖于switch
是显式值的已知编译时列表,而不是关系操作。如果您有一系列“如果值介于a和b之间”类型的情况,则if...else if...
很可能是最佳选择。