首页 > 试题广场 >

假设变量 x 、 k 都已定义,下列语句片段中,无语法错误的

[单选题]

假设变量 x k 都已定义,下列语句片段中,无语法错误的是( )。

  • switch(x)
            {  case x<15:  putchar('A'); 
               case x>30:  putchar('E');
            }
  • switch(x)
            {  case 3+2:  a='A'; 
               defualt:    a='E';
               case 1*3:   a='B';
            }
  • switch(x)
            {  case 1+a:   k=x-2; 
               case 5*a:   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语句的规则。
switch(expression)

    case constant-expression : 
        statement(s);
        break;  
    case constant-expression : 
        statement(s); 
        break;  
    default :  statement(s); 
}
  • case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。所以排除A、C项
  • switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。而case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,所以也属于整型或枚举类型。排除D项
编辑于 2019-12-04 14:31:57 回复(0)
B。考察的是switch语法。
switch(expression){
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
  
    /*可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}
switch 语句必须遵循下面的规则:
  • switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。---排除CD
  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
  • case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。----排除A
  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
  • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
  • 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
  • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
发表于 2019-12-03 18:16:27 回复(0)
switch ()里面是一个常量表达式,必须是一个整型或枚举类型。而case ? : ,?必须与 switch 中的变量具有相同的数据类型
发表于 2021-06-27 21:28:44 回复(0)

常量或常量表达式,且是整数/枚举/字符

发表于 2020-04-08 11:44:24 回复(0)
传入 switch( ... ) 的参数必须为一个整形变量
发表于 2020-02-29 10:24:54 回复(0)