zoukankan      html  css  js  c++  java
  • C语言 switch default的位置

    switch中的default,一般用在最后,表示非以上的任何情况下而发生的情况,我们一般习惯在他的后面加上个break。但是,如果default不是在最后,而是在前面或中间会发生什么情况呢:

    先看看default在句首的情况:
    int i = 2;
    switch (i) {
      default:
       System.out.println("default");
      case 0:
       System.out.println("0");
      case 1:
       System.out.println("1");
      case 2:
       System.out.println("2");
        break;
      case 3:
       System.out.println("3");
      case 4:
       System.out.println("4");
        break;
    }
    他的输出结果是:2! 很明显,不是先执行的default语句!
    再看看下面语句:
    int i = 8;
    switch (i) {
      default:
       System.out.println("default");
      case 0:
       System.out.println("0");
      case 1:
       System.out.println("1");
      case 2:
       System.out.println("2");
        break;
      case 3:
       System.out.println("3");
      case 4:
       System.out.println("4");
        break;
    }
    他的输出结果是:
    default
    0
    1
    2
    出人意料!!从default开始向后执行!
    再看看default在句中的情况:
    int i = 2;
    switch (i) {
      case 0:
       System.out.println("0");
      case 1:
       System.out.println("1");
        break;
      default:
       System.out.println("default");
      case 2:
       System.out.println("2");
        break;
      case 3:
       System.out.println("3");
      case 4:
       System.out.println("4");
        break;
    }
    结果是2!显然还是没执行default!
    int i = 8;
    switch (i) {
      case 0:
       System.out.println("0");
      case 1:
       System.out.println("1");
        break;
      default:
       System.out.println("default");
      case 2:
       System.out.println("2");
        break;
      case 3:
       System.out.println("3");
      case 4:
       System.out.println("4");
        break;
    }
    结果:
    default
    2
    显然是从default开始向后执行的!

    从上面可以看出:
    switch default 之前的case按顺序执行(首先确定是否命中case,命中case,从命中case开始执行),最后执行default,如果default 没有break,继续执行default之后语句,直到跳出switch

  • 相关阅读:
    yeoman+grunt/gulp+bower构建angular项目
    eclipse配置svn 并从svn下载maven项目 配置tomcat启动maven项目(二)
    eclipse配置svn 并从svn下载maven项目 配置tomcat启动maven项目
    mysql Oracle常用使用区别
    海思平台交叉编译curl支持SSL功能
    Gitlab 自动构建心得
    openssl windows平台编译库
    更换树莓派源成国内源
    使用ntp协议同步本地时间(C语言)
    网络分析纪录
  • 原文地址:https://www.cnblogs.com/loongqiang/p/3555349.html
Copyright © 2011-2022 走看看