是的,在 C 和 C++ 中,可以使用类似这样的语法来在多个 case 语句之间共用一组执行语句:
switch (expression) {
case value1:
case value2:
case value3:
// 这组语句将会在 value1、value2 和 value3 之间被执行
// 其他的语句
break;
case value4:
// 这组语句将只会在 value4 被执行
// 其他的语句
break;
// 其他的 case 语句
default:
// 这组语句将会在所有其他情况下被执行
// 其他的语句
在这个例子中,当表达式的值等于 value1、value2 或 value3 时,将会执行后面的语句。而当表达式的值等于 value4 时,将会执行另外一组语句。如果表达式的值与所有的 case 值都不匹配,则会执行 default 语句之后的语句。
注意,在每组语句的最后,都应该包含一条 break 语句。这样可以防止 case 语句之间的执行语句被意外地执行。
例如,如果你在没有使用 break 语句的情况下执行如下的代码:
switch (x) {
case 1:
case 2:
printf("x is 1 or 2\n");
case 3:
printf("x is 3\n");
default:
printf("x is not 1, 2, or 3\n");
那么,如果 x 的值等于 1,将会输出 "x is 1 or 2" 和 "x is 3"。如果 x 的值等于 2,将会