switch(x)
{ case x>=90: putchar('A');
case x<60: putchar('E');
}
switch(x)
{ case 1+2: k='A';
case 2*4: k='B';
defualt: k='E';
}
switch(x)
{ case 2+x: k=x-2;
case 3*x: k=x+3;
default: k=0;
}
switch(x)
{ case 3.5: k=0.5*x;
case 7.8: k=8*x;
default: k=0;
}
B选项:①当switch后的表达式值和case后的常量值匹配相等后,case后面的代码将会被执行,直到遇到break语句被执行后跳出switch代码块。
②break不是必须的,如果没有break,则执行完当前case的代码块后会继续执行后面case代码块的内容。
③default在switch语句内部放在任意的位置都可以。条件判断都是先按顺序比较其他非default值的case,当这些条件都不满足的时候,才跳转到default的相应代码处执行。没有匹配值的时候default就是进入点,进入default以后会和普通进入点一样,如果没有break继续执行下面语句。因此B选项正确。
如下:令x=5,则开始进入switch语句之后跳转到default的相应代码处运行。而default语句后没有break语句,因此会继续向下执行case 2*4的代码块,因此最终k的值为‘B’。
D选项,case后必须是整型类型的常量或常量表达式,不能使用float或double型。因此D选项错误。