我试图简化一段很长的代码,我想知道在case语句之后是否可以使用条件而不是var的值。
即,
switch(var) {
case(var>1): printf("Var greater than 1");
case(var<1): printf("Var less than 1");
}
这可能吗?如果没有,任何具有相同一般想法的替代方案?
答案 0 :(得分:7)
没有。这是不可能的。使用if
和else if
。
if (var > 1) {
printf("Var greater than 1");
} else if (var < 1) {
printf("Var less than 1");
}
答案 1 :(得分:0)
switch是一个条件语句,用于在每种情况下匹配一个值。你在看什么是不可能的。您必须使用If else语句执行此操作。
答案 2 :(得分:0)
自C#7起,SWITCH语句变得更加强大;尝试以下方法:
SWITCH (myVariable){
CASE var myVal WHEN myVal < 1 :
... my code ...
break;
CASE var myVal WHEN myVal > 1 :
... some other code ...
break;
}
答案 3 :(得分:0)
据我所知,你不能,但无论如何它也没那么有用。除了在 C# 中。 您可以做的最接近的事情是:
// Program which tells what variable is less than 5
#include <iostream>
using namespace std;
int main()
{
const int a = 5, b = 4, c = 8;
switch (true)
{
case (a < 5):
cout << "A";
break;
case (b < 5):
cout << "B";
break;
/*
case (c < 5):
cout << "C";
break;
*/
default:
cout << "None";
break;
}
}
由于 switch()
将括号内的值与每种情况进行比较,因此您可以编写诸如 switch(5)
或 switch(true)
之类的内容,然后在每个情况下使用变量或条件表达式案件。
但即使这样做,还有另外两个问题:1.-在这种情况下隐含的所有变量必须是常量,否则将无法编译,(见代码)和2.-< /strong> Switch 语句不允许重复任何情况,如您所见,我注释掉了最后一个情况,因为已经存在一个错误条件,因此它不会被编译。
答案 4 :(得分:-1)
是的,但是有一个简单的技巧:
var myVal = 'something' ;
if (myVal < 1) {
myVal = 0;
}
if (myVal >= 1){
myVal = 1;
}
switch (myVariable) {
case 0:
... my code ...;
break;
case 1:
... some other code ...;
break;