C使用案例(条件):而不是案例值:

时间:2015-03-13 00:43:55

标签: c switch-statement

我试图简化一段很长的代码,我想知道在case语句之后是否可以使用条件而不是var的值。

即,

switch(var) {
    case(var>1): printf("Var greater than 1");
    case(var<1): printf("Var less than 1");
}

这可能吗?如果没有,任何具有相同一般想法的替代方案?

5 个答案:

答案 0 :(得分:7)

没有。这是不可能的。使用ifelse 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;