switch

作者: 箩篼 | 来源:发表于2018-08-31 14:16 被阅读0次

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


    明确概念

    格式

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

    分析语句

    • 表达式的值(注意是值,里面可以进行运算!):必须是整型变量或常量,或者可以被提升为整型的变量(如short、char)或常量(如a'')
    • 常量表达式:必须是常量,且必须是整型或者能够提升为整型的值,不能接收变量
    • default:可以省略,整个switch在遇到"}"结束

    易错点

    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;
        }
    

    相关文章

      网友评论

          本文标题:switch

          本文链接:https://www.haomeiwen.com/subject/beuswftx.html