如何在case语句中使用布尔运算符?

时间:2010-01-24 03:41:25

标签: objective-c

我只是不明白如何在switch语句中使用布尔运算符

switch (expression) {
        case > 20:
            statements
            break;
        case < -20:
            statements
            break;
    }

修改
我不想要一个If()语句。

2 个答案:

答案 0 :(得分:10)

你做不到。使用if() ... else ...

你想要的最近的东西使用GCC扩展,因此是非标准的。您可以在case语句中定义范围,而不仅仅是值:

switch(foo)
{
    case 0 ... 20: // matches when foo is inclusively comprised within 0 and 20
         // do cool stuff
         break;
}

但是,您无法使用它来匹配特定值下的任何。它必须在一个精确的范围内。 Switch es只能用于将比较运算符替换为常量,并且不能用于除此之外的任何内容。

答案 1 :(得分:5)

switch ((expression) > 20) {
        case true:
            statements
            break;
        case false:
        default:
            statements
            break;
    }

在一个案例中你想要多于1个布尔值?你可以这样做

int ii = ((expression) > 20) + 2 * ((expression) < -20);
switch (ii) {
        case 1:
            statements
            break;
        case 2:
            statements
            break;
    }

这,IMO是非常糟糕的代码,但这是你要求的......

只要使用if语句,从长远来看,你会更好。