单行比较C中的几个值

时间:2016-11-17 09:48:17

标签: c syntax compare

例如,我们可能有一个if语句,想要检查一个变量是否等于4个不同的值,可能类似

    if(x == 1,2,3,4){ do something }

在C中执行此操作的正确语法是什么?我知道逗号可以用其他语言编写,我似乎无法想象如何不检查几个不同。我能想到的另一件事就是不得不做

    if((x == 1)||(x ==2)

但毫无疑问我会超过4,这会很快烦人。我没有看到这样的任何其他问题,如果你知道的话,请指点我。

2 个答案:

答案 0 :(得分:5)

如果值是常数,我会用开关来做:

switch(x)
{
    case 1:
    case 2:
    case 3:
    case 4:
        //do something
        break;
}

如果数字是连续的,您可以使用if (x >= 1 && x <= 4)

答案 1 :(得分:2)

首先,缩写as mentioned by mch in the other answer

 if ( (x >= 1 && x <= 4) || (x >= 10 && x <= 40) || ....) //whatever condition

否则,(不是单行比较)如果您使用gcc扩展名就可以了,就会有一个名为case-range的功能。

在那里,您可以指定值的范围。像

这样的东西
 case 1 ... 5:

有效。

最后,一个落后的switch案例也可能会派上用场,比如

switch(val)
{
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
           break;

    case 6:
    case 7:

           break;

    default:

            break;
}