本题正确答案是C,我觉得ABCD都对啊,在小猿搜题上搜了答案ABCD都有,且没有解析。这些代码片段是手打的,可能有错(居然发布不了 阿巴巴),请以图片为准。
A switch 不能是 float
B 和 D switch 后面 都有个分号,这是错误的
根据参考资料中关于switch语句的说明,case后面必须是整形或整形表达式,因此选项C的Switch语句是不合法的。而其他选项中的Switch语句都是合法的。具体解释如下:
选项A:case后面是整形常量,符合要求,合法。代码示例:
switch (a) {
case 1:
// statement...
break;
case 2:
// statement...
break;
default:
// statement...
break;
}
选项B:case后面是字符常量,因为字符常量对应的整形值可以直接参与比较,符合要求,合法。代码示例:
switch (ch) {
case 'a':
case 'A':
// statement...
break;
case 'b':
case 'B':
// statement...
break;
default:
// statement...
break;
}
选项C:case后面是浮点型变量,不符合要求,不合法。代码示例:
float w = 1.23;
switch (w) {
case 1.23:
// statement...
break;
case 4.56:
// statement...
break;
default:
// statement...
break;
}
选项D:case后面的表达式虽然是整形表达式,但由于存在二元运算符,不符合要求,不合法。代码示例:
switch (a + b) {
case 2 * a:
// statement...
break;
case a + b:
// statement...
break;
default:
// statement...
break;
}
因此,答案为ABD,选项C的Switch语句是不合法的。