关于 Switch 语句

如果您有大量依赖于单个变量值的条件语句,使用 switch 语句通常比使用一长串 if/else 语句更方便。

switch 语句具有以下格式:

    switch( expression ) {
        case value1:
            statement1
            break;
        case value2:
            statement2
            break;
         . . .
        default:
            statement3
    }

通过示例最能说明这一点。以下 switch 语句将整数值 n 转换为该整数的文本表示:

    switch(n) {
        case 0:
            name="zero";
            break;
        case 1:
            name="one";
            break;
        case 2:
            name="two";
            break;
        case 3:
            name="three";
            break;
        case 4:
            name="four";
            break;
        case 5:
            name="five";
            break;
        case 6:
            name="six";
            break;
        case 7:
            name="seven";
            break;
        case 8:
            name="eight";
            break;
        case 9:
            name="nine";
            break;
        default:
            name="ERROR: n is not between 0 and 9";
}

此语句首先计算表达式 n,然后扫描所有 case 语句以找到与 n 的值匹配的语句。例如,如果 n 等于 3,条件语句的执行从 case 3: 开始。在示例中,对于每个 case,设置名为 name 的变量的值,然后跳出 case 语句。使用 break 命令跳出语句。如果没有任何 case 语句包含与 n 的值匹配的项,执行将跳转到 default:。

请注意,条件语句的执行从匹配的 case 语句开始,但不会在下一个 case 语句开始时结束。例如,如果您删除第三个和第四个 case 之间的 break 命令,如下所示:

case 3:
    name="three";
case 4:
    name="four";
    break;

当 n 等于 3 时,变量 name 被设置为 three,然后执行串联进入下一个 case 语句。也就是说,name 被更改为等于 four。

您可以使用此功能来合并 case,如下例所示:

switch(n) {
    case 0:
    case 2:
    case 4:
    case 6:
    case 8:
        name="even number";
        break;
    case 1:
    case 3:
    case 5:
    case 7:
    case 9:
        name="odd number";
        break;
    default:
        name="ERROR: n is not between 0 and 9";
}

各个 case 值可以是任何数据类型,而不仅仅是数字。以下所有都是合法的 case 表达式:

case 3:
case 2.78:
case "number":
case true:
case [1,2,3]:
case 2+3:
case f(x)+g(y):