程式設計條件判斷之章,switch…case。

switch…case這個條件判斷的用法,就如同他的名字一樣的直覺。

switch,中文有切換的意思,而case則有案例的意思。它的運作原理跟 if 非常相似,不過在程式中,閱讀起來有時比if來得簡單也更容易懂,尤其當判斷的結果需要很多種變化時,switch…case就是個不錯用的流程控制語法。

這是一個簡單的switch…case例子: switch case

(來源:Cherng)

不對,這個才是:

等效於 if

運作結果:你可以自己試試看~

如何?同樣的結果,但用 switch…case 寫的程式是不是比較容易理解呢?至少不會一堆符號參雜在一起,導致閱讀跟理解上也亂七八糟的參在一起這樣。啊..什麼?看不懂嗎?我想說我這次就BJ4,直接在這裡做個Ending,然後我就可以繼續放著長草了說…(大誤)

好吧,先來看看switch(c)這個奇怪的東西。

switch所做的其實就是一個判斷,他會去把括號裡面的東西跟底下case後接的東西做比對跟判斷,如果結果相符,那就執行那個case。執行到break後離開switch,然後繼續往下執行。

「蛤?你在說啥,可以說中文嗎?」

可以。

這樣好了。有天你在寫一張選擇題考券,看完題目後,你在下面的四個選項中猜答案。最後,你覺得答案是A,所以就在題號前的括號(或答案卡)填上A,然後結束這個題目,繼續向下看。

如果你腦筋動得快,我相信你應該已經稍稍的發現,這個敘述與上面的程式碼長得非常相似。還是不懂沒關係,我稍稍的分析一下給你聽。

當你在看完考卷題目時,就像是在生出switch…case這樣的一段程式碼一樣。

然後開始選,要哪個答案比較好。最後決定A答案最好,而這部分其實是在決定 c 的內容。在範例中雖然我是寫死的…不過別這樣,想像那是可以改的 XD 為了要寫下答案A,所以我們的頭腦找(switch)出了寫的方式(case ‘A’),然後命令手執行這個動作(printf(“A\n”)),這樣就是一個大概的 switch…case運作方式。

「default哩?你怎沒講?」

default是預設的動作,也就是說,假如今天ABCD都不是想要的答案,或是今天奇摩子差,不想寫,那就是執行這個動作了。

換個說法就是,當 c 變數不是ABCD其中之一時,便會執行 default 著個案例的內容。 要注意的是,每個 case 的結尾處一定要放上 break; 不然程式會繼續向下執行,直到switch的最後一行為止。像這個範例就是。

還有,當default不是最後一個的時候,也要放上break;不然結果就是…恩。

好了,距離先前發的系列文,這篇文章至少隔了近一年又七個月(驚),希望這篇文章能帶給你一些幫忙囉~

在〈程式設計條件判斷之章,switch…case。〉中有 3 則留言

  1. 一開始我看到 break 這個功能我覺得感覺很多餘
    不過之後我看到有人應用沒有 break 會繼續往下讀這點的功能來計算日數
    我覺得還滿出乎我的意料之外,當初完全沒想到可以這樣應用這點

    可能我學的還太淺了

    1. switch(month){
      case 12: date += 30;
      case 11: date += 31;
      case 10: date += 30;
      .
      .
      .
      break;
      }

      會自動連加,也是有直接先加好每個月分的(一月到那個月的日數)
      不過我還是覺得這種寫法讓我驚豔了 haha

您的見解

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料