谁可以解释一下BCD为什么错呀?

若有定义:float x=1.5;int a=1,b=3,c=2; 则正确的switch语句是()。

A

switch(a+b)

{

case 1:

    printf("*\\n");

case 2+1:

    printf("**\\n");

}
B

switch((int)x);

{

case 1:

    printf("*\\n");

case 2:

    printf("**\\n");

}
C

switch(x)

{

case 1.0:

    printf("*\\n");

case 2.0:

    printf("**\\n");

}
D

switch(a+b)

{

case 1:

    printf("*\\n");

case c:

    printf("**\\n");

}

B,switch后面多了一个分号
C,switch不能用浮点数,只能是整型或字符型
D,case c错了,case跟的是常量,不能是变量

B的错误是语法错误,switch语句后不应加分号。

  1. switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。所以C就是错的,x不是整形也不是枚举型
  2. case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。所以D 是错的,因为c是变量

switch后的括号中只能是整型或字符型表达式。
1.选项B在switch的括号后面多了一个分号。
2.选项C中使用的是浮点型变量x。
3.switch的case标号后只能是常量或常量表达式,而不能是变量,所以选项D也不正确。
有帮助的话采纳一下哦!