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

  • 相关阅读:
    Google
    LeetCode 664. 奇怪的打印机
    LeetCode 79. 单词搜索
    LeetCode 224. 基本计算器
    Windows 端口映射
    LeetCode 354. 俄罗斯套娃信封问题
    LeetCode 300. 最长递增子序列
    LeetCode 338. 比特位计数
    LeetCode 395. 至少有K个重复的最长子串
    LeetCode 424. 替换后的最长重复字符
  • 原文地址:https://www.cnblogs.com/loongqiang/p/3555349.html
Copyright © 2011-2022 走看看