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