若有定义:float w;int a,b;则合法的Switch的语句是

本题正确答案是C,我觉得ABCD都对啊,在小猿搜题上搜了答案ABCD都有,且没有解析。这些代码片段是手打的,可能有错(居然发布不了 阿巴巴),请以图片为准。

img

A switch 不能是 float
B 和 D switch 后面 都有个分号,这是错误的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    根据参考资料中关于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语句是不合法的。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^