根据标准C的规定,case后面的常量表达式只能是整型类的常量,如int, char ,enum等类型,所以A错。
switch(a+b); --->注意这个分号,case语句不能离开switch()单独存在,所以C错。
A是浮点数,因为大多数浮点数是无法精确表示的,比如0.4就无法用浮点数精确表示,对浮点数的==判断也是不可取的(对于浮点数的相等判断一般采用差的绝对值是否小于某个给定的值来判断,而不用==),那么浮点数当作switch的分支判断选项就是不合适的,于是规定只能用整型值表达式
C在swtich(a+b)后面多了一个分号
1错是因为switch中只能用整数不能用浮点数,3是对的,case後的是常量表达式,可能出题的人用的甚麼奇怪的编译器吧,或者他想当然以为case後不能是表达式