在 switch 语句中检查数字是否从 1 个数字匹配到另一个数字

Check if number matches from 1 number to another in switch statement

我有一个 switch 语句比较 integer。我想做的是检查 integer 是否一直匹配 1 个数字,直到下一个。

例如:如果我想比较一个名为 myIntegerinteger,我想看看数字 2、3、4、5 或 6 是否与 `myInteger 匹配,那么执行以下操作。

这是一个编码示例:

switch (myInteger) {
    case 0:
        ...
    case 1:
        ...
    case 2 to 7:    // This is what I'm trying to achieve
        ...
}

那么,我怎样才能使 switch 语句遍历一个数字范围?

Objective-C 等基于 C 的语言不支持这种语法。只需使用 if 语句:

if (myInteger >= 2 && myInteger <= 7)) {
    // do stuff
}

在 switch 语句中,每个 case 值必须是离散常数。

您实际上可以使用 ... 运算符对 objective C 执行此操作。

根据您的示例,这会在 0 到 7 和 8 到 14 之间找到。任何更大的都是默认操作。

switch (myInteger) {
    case 0 ... 7:
      break;
    case 8 ... 14:
      break;
    default:
      break;
}

亲自尝试一下,您会发现它有效。这是 gcc 支持的后遗症:

Switch-Case Statement and Range of Numbers