3

我想使用 switch 语句,我的 if 条件是:

if (userInput%2 == 0 || userInput != 0)

我可以从这段代码中得到两种情况来执行不同的操作userInput == 0和不同的操作吗userInput == 0

case ?:

case ?:
4

2 回答 2

3

您不能,因为满足这两个条件的值集重叠。具体来说,所有偶数都满足您的两个条件。这就是为什么如果不首先确定条件的哪一部分优先,就不能执行不同的操作。

您可以在switch语句中使用 fall-through 小技巧,如下所示:

switch(userInput%2) {
    case 0:
        // Do things for the case when userInput%2 == 0
        ...
        // Note: missing "break" here is intentional
    default:
        if (userInput == 0) break;
        // Do things for the case when user input is non-zero
        // This code will execute when userInput is even, too,
        // because of the missing break.
        ...
}
于 2013-01-28T20:33:52.120 回答
2

为什么不直接拆分if语句

if (userInput%2 == 0) {
    // something
}
else if (userInput != 0) {
    // something else
}

请注意,测试的顺序很重要,因为所有非零偶数都满足两个测试。

于 2013-01-28T20:33:42.447 回答