switch

2018-08-31  本文已影响0人  箩篼

本章主要整理一下switch的易错点


明确概念

格式

 switch(表达式){
        case 常量表达式1:
            语句1;
            break;
        case 常量表达式2:
            语句2; 
            break;
        case 常量表达式n:
            语句n;
            break;
        default:
            语句n+1;
            break;
    }

分析语句


易错点

1、若要在case 分支里定义变量,必须加上一对{},否则该变量作用域不明确会报错,如:

  switch(1){
     case  1:
     int num = 666;
     printf("1\n");
     break;
     case  2:
     printf("2\n");
     break;
     case  3:
     printf("3\n");
     break;
    }

正确写法:

   switch(1){
     case  1:
    {
     int num = 666;
     printf("%i\n",num);
     break;
     }
     case  2:
     printf("2\n");
     break;
     case  3:
     printf("3\n");
     break;
    }

2、default可以写在任意位置,无论放在哪里都会等所有case分支不匹配再执行。但若不是写在最后,不能省略break;语句,否则会出现穿透现象,如:

switch(4){
     default:
       printf("default\n");
     case 1:
       printf("1\n");
       break;
     case 2:
       printf("2\n");
       break;
     case 3:
      printf("3\n");
      break;
//打印  default
//打印  1
}

将default调整到最后:

switch(4){
     case 1:
       printf("1\n");
       break;
     case 2:
       printf("2\n");
       break;
     case 3:
       printf("3\n");
       break;
    default:
      printf("default\n");
//打印default
    }

3、case 常量表达式的值不可以重复,如

switch(3){
   case  1:
      printf("1\n");
      break;
   case  2:
      printf("2\n");
      break;
   case  1:
      printf("3\n");
      break;
   default:
      printf("default\n");
      break;
  }

会报错!!!
注意点:常量表达式只需要值为常量即可,如2+1 例:

  switch(3){
     case  1:
        printf("1\n");
        break;
     case  2:
        printf("2\n");
        break;
     case  2+1:
        printf("3\n");
        break;
     default:
        printf("default\n");
        break;
    }
上一篇 下一篇

猜你喜欢

热点阅读