• =。=switch中的default><摘自网上


    当年学C语言switch开关语句的时候,很多人会告诉你它是这么用的:


     
    1. switch(表达式){    
    2.   
    3.         case常量表达式1:  语句1;  
    4.   
    5.         case常量表达式2:  语句2;  
    6.   
    7.         …    
    8.   
    9.         case常量表达式n:  语句n;  
    10.   
    11.         default        :  语句n+1;  
    12.   
    13.         }  
    14.   
    15. 其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。  

    很多人当时都是这么理解的吧。

    好,我们来看这样一个程序


     
    1. #include <stdio.h>  
    2.   
    3. int main()  
    4. {  
    5.     int c= 0, k;  
    6.     for (k = 1; k < 3; k++)  
    7.         switch (k)  
    8.         {  
    9.     <span style="white-space:pre">  </span>    default:c += k;  
    10.             case 2:  
    11.               c++; break;  
    12.             case 4:  
    13.               c += 2; break;  
    14.         }  
    15.     printf("%d",c);  
    16.     return 0;  
    17. }  

    你觉得答案会是多少?

    答案是3。

    分析一下这个题目,首先看上去第一眼就很怪,怎么把default放在第一句了。那么程序是怎么执行的呢?

    当k=1的时候,c+=k ——>c=1 这个时候要注意了,default后面并没有break,所以并不会跳出去,会执行case2,c++

    ——>c=2,遇到break,跳出。

    当k=2的时候,执行case2 ,c++——>c=3;遇到break,跳出。

    所以这里总结一下default的用法:

    如果default语句在所有case最后,此时可以不加break 如果default语句之后还有case语句,如果不加break,则default语句执行过之后会继续下面的case语句,此时必须要在default之后加break语句,不过这种default用法是不推荐的,default顾名思义是缺省情况,只有任何条件都不匹配的情况下才会执行,所以应该将default语句放在所有case结束之后

  • 相关阅读:
    使用MyEclipse开发Java EE应用:EJB项目开发初探(上)
    使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(五)
    使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
    css定位方式有哪几种?
    什么是X-UA-Compatible?X-UA-Compatible的作用
    css中vertical-aling与line-height
    编写优秀CSS代码的8个策略
    less的使用几个技巧
    微信h5页面下拉露出网页来源的解决办法
    input禁止输入的方法
  • 原文地址:https://www.cnblogs.com/fairy-wzp/p/6943322.html
Copyright © 2020-2023  润新知