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执行顺序是与编译器有关的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM