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

Jab*_*Jab 5 objective-c

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

switch (expression) {
        case > 20:
            statements
            break;
        case < -20:
            statements
            break;
    }
Run Code Online (Sandbox Code Playgroud)

编辑:
我不想要一个If()语句.

zne*_*eak 10

你不能.使用if() ... else ....

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

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

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


Joh*_*ler 5

switch ((expression) > 20) {
        case true:
            statements
            break;
        case false:
        default:
            statements
            break;
    }
Run Code Online (Sandbox Code Playgroud)

什么..你想要一个案例超过1布尔?你可以做到这一点

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

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

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