zoukankan      html  css  js  c++  java
  • switch中的default的位置

    【转载】http://hi.baidu.com/dannie007zxl/item/5d0c3185577df719c3162724 

    有的时候,我们对身旁自认为熟悉的东西,却发现很难去给出准确的回答。

    习惯了程序在脑袋中自上向下的执行,默认程序也是如此。 

    学习switch语句的时候,接受下面这样的程序:

    //Code1
    
    switch(a)
    {
     case 1:
         printf("one");
         break;
    
     case 2: 
         printf("2");
         break;
    
     default: 
         printf("default");
         break; 
    }
     
     /** 输出结果 ****************
           a=1 时 输出 one
           a=2 时 输出 two
           a=3 时 输出 default
     ****************************/

     

    从学switch起,就被教育 【default 是放在最后的】,从来没去质疑过这种说法。

    switch中的default一定要在最后吗?答案是否定的。

    那么,下面的执行结果又是什么呢?

    //Code2
    
    switch(a)
    {
     case 1:
         printf("one");
         break;
    
     default: 
         printf("default");
         break; 
    
     case 2: 
         printf("2");
         break;
    }
     
     /** 输出结果 ****************
           a=1 时 输出 one
           a=2 时 输出 two
           a=3 时 输出 default
     ****************************/

    结论是是Code2 与 Code1的结果是相同的,同理即使把default放在第一个位置上,结果也是相同的。 

    再看一个

    //Code3
    switch(a)
    {
     case 1:
         printf("one");
         break;
    
     default: 
         printf("default");
    //   break; 
    
     case 2: 
         printf("2");
         break;
    }
     
     /** 输出结果 ****************
           a=1 时 输出 one
           a=2 时 输出 two
           a=3 时 输出 default2  ★多了一个2
     ****************************/

     

      【结论】

          1.default是在case全都不匹配的情况。

          2.default放在任意的位置都可以。

          3.没有匹配值的时候default就是进入点,进入default以后会和普通进入点一样,如果没有break继续执行下面语句。

          Microsoft Visual C++和Borland的编译器都是采用二分查找方法来检测case的各种情况,所以这个switch的case和default执行顺序是与编译器有关的。

  • 相关阅读:
    微信小程序 页面跳转navigator与传递参数
    微信小程序 wxml中的属性记录
    iOS 集成极光推送
    ios 后台发送邮件之SKPSMTPMessage的使用
    git 配置忽略文件(忽略UserInterfaceState.xcuserstate,Breakpoints_v2.xcbkptlist)
    iOS 定位功能的实现
    ios 关于状态栏的一些小知识
    ios label上显示特殊字符 % "
    ios 按钮点击无反应
    ios 正则表达式之验证手机号、邮箱、身份证、银行卡
  • 原文地址:https://www.cnblogs.com/LubinLew/p/default_in_switch.html
Copyright © 2011-2022 走看看