【C++ 筆記】條件判斷 - part 4
【C++ 筆記】條件判斷 - part 4
很感謝你點進來這篇文章。
你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧!
條件判斷(Condition)

Image Source:Decision Making in C (if , if..else, Nested if, if-else-if ) - GeeksforGeeks
Condition,表示一個情況,也可稱之為一個條件。
以上的圖中是 if 語句的流程圖,Condition 如果是 True 的話,則會經過 if Condition 判斷,直接進入到 username code,這個 username code 就是要由我們自己定義的執行內容。
如果 Condition 是 False,同樣也會進入到 username code,一樣是要由我們自己定義的執行內容。
回到正題,C++ 當中有四種條件語句的形式:
- if
- if-else
- else if
- switch
相信各位看到第四個肯定會想說,switch???
是的,就是各位想的那個 switch,交換器(讀者:我想的不是這個好嗎==)。
接下來就讓我們一個一個來介紹吧。
if 語句
以下是 C++ 定義的 if 語句:
1 | if(boolean_expression) |
如果 boolean_expression 為 true,也就是布林運算式,那麼就執行中括號裡面的內容。
如果 boolean_expression 為 false,則跳過中括號,繼續往下執行內容。
boolean_expression 我們可以舉以下例子:
1 | if (a == b){ |
即為一個布林運算式,之前我們說過,運算式是由運算元與運算子組成的一個結構,像是上面的範例 a == b 就是一種運算式。
接下來讓我們練習一下 if 語句:
1 |
|
如果 if 語句沒有設定條件的話,只放了變數進去,則預設就是判定 a == True。
if-else 語句
else 一定會在 if 條件句的下面,else 會在上一個條件語句不成立的時候執行。
什麼意思呢?我們先看以下這張流程圖:

圖源:作者繪製
以上是 if、else 的基本架構之流程圖,若以這張圖來解釋的話,只有在當 if 是 False(條件不成立)的時候,才會執行 else 的判斷式。
總之,else 就是在當前一個條件不成立、False 的時候,才會執行。
我們再來用生活中的例子舉例好了:
今天有一個道路,呈現一個 T 字形,前面有兩個路口,其中左邊是被封住的,右邊是通的。
如果我們今天不顧一切就是要走左邊的話,那是不是此路不通,必須要改往右邊走?
而改往右邊走就代表說是 else 的判斷,最後就會執行 else 裡面的程式碼。
然後接著就是練習~~寫程式沒什麼秘訣,就是要勤奮的練習!
1 |
|
輸出結果:
1 | a > 50 |
if-else if-else 語句
else if 就是在原本 else 的基礎上,多加一個 if 語句判斷條件。
定義如下:
1 | if(boolean_expression 1) |
如果我們這樣寫(把 else if 寫在 else 下面):
1 | if(boolean_expression 1) |
會出現以下的錯誤:
1 | error: 'else' without a previous 'if' |
所以必須注意的是,else 必須放在 if、else if 的最下面,因為 else 就是表示以上全部條件都不成立的情況下,才會執行。
繼續練習!以下是範例程式碼。
1 |
|
輸出結果:
1 | a <= 100 |
if 巢狀語句
巢狀語句就是 if 裡面還有一個 if 繼續判斷,如下程式碼:
1 | if( boolean_expression 1) |
else if…else 的形式如下:
1 | if (condition1) { |
其實這個程式邏輯與前面所述的 if、if-else 等等的語句是一樣的,只要我們靠「條件成立、不成立」來做二分法會容易許多,就是所謂的非 0 即 1。
所以,繼續來練習~~
1 |
|
輸出結果:
1 | a < 150 |
這就有點像是一道一道的關卡一樣,首先我們經過 a < 150 這道關卡,過去以後,系統提示說:a < 150;之後再經過 a < 125 這道關卡,過去以後,系統提示說:a < 125。
再練習一題:
1 |
|
輸出結果:
1 | a < 200 |
首先這支程式碼先判斷了 a 是否小於 200,如果條件成立,則最下面那個 else 就不會被觸發,就不會被執行到。
接著印出 a < 200。
然後繼續檢查:a 是否小於 150,這邊是使用 “<” 比較運算子,而不是 “<=”,所以條件不成立。
不成立的話我們繼續走,發現還有一個 else 耶,那因為前面條件語句不成立,所以 else 以下程式碼就會執行囉!
switch 條件語句

Image Source:Switch Statement in C++ - GeeksforGeeks
以上是 switch 的運作方式之流程圖。
欸 switch 不是下面那個 switch 啊!!

圖源:Nintendo Switch | 任天堂官方網站(台灣)
咳、咳),所以說 switch 它其實是一個 if-else if-else 簡化過後的語法,兩者是可以互相交換的。
也可以說 switch = if-else if-else。
switch 在 C++ 的定義如下:
1 | switch(expression){ |
可以看到上面有個 break,這是代表什麼意思呢?break 就是打斷的意思,在程式語言當中會停止當前的結構,並且跳出結構外,繼續進行程式碼。
什麼意思呢?比如說 switch 語句當中,每一個 case 都是在檢查運算式是否與 switch 本身的條件相等,如果相等就會做出相對應的動作,但同時也不會馬上離開 switch 語句,仍然還會繼續判斷下去,所以如果在這時候加上 break 的話,就能夠直接從 switch 語句當中跳出去。
必須注意的是,break 不能用在其他的條件語句,如 if、else if 等當中,否則會出現以下錯誤:
1 | error: break statement not within loop or switch |
讓我們整理一下:
- switch(expression) - 小括號裡面放上需要被檢驗的運算式
- case constant-expression - case 右邊一個空格,之後填上對應的常數運算式,每一次這個運算式都要跟 switch 的運算式做比較,是否相等?是的話,則執行 case 下面的內容。作用像是 else if。
- default - 作用等同於 else,當所有 case 的條件都不成立的時候就到最後的關頭,default。
練習練習~(範例取自:switch 條件判斷):
1 |
|
cin 我們在之前有說過,是 C++ 當中表示輸入的意思。其字面意思拆解為 character input,表示字元輸入。
這支程式碼當中可以看到有 case 10: case 9: 的寫法,其實就是表示說 10、9 兩個條件其中之一成立的話就可以了,也就是說得 10,會輸出結果為 A;得 9,輸出結果也是為 A。
那各位肯定又有疑問了,像我 95 / 10,不是等於 9.5 嗎?這樣難道不會程式出現錯誤嗎?
這點不用擔心,因為最上面 score 所被宣告的資料型態為整數 int,小數點會自動被去除。
? : 三元運算子
? : 三元運算子是在 C++ 當中很特別的運算子,像 Python 就沒有這種東西。
它的定義如下:
1 | Exp1 ? Exp2 : Exp3; |
Exp = Expression - 運算式
什麼意思呢?
如果當 Exp1 為 True,也就是條件成立,則執行 Exp2。
如果當 Exp1 為 False,也就是條件不成立,則執行 Exp3。
那我們可以這樣說:三元運算子 = if else 的簡化形式。
總之老話一句,練習,安排!
1 |
|
以上是比較兩數大於小於的程式碼,
? 問號前面放的是一個運算式,如上面的 a > b,如果 a > b 是 True,則執行 cout << a << “ > “ << b << endl,這個放在冒號前面。
而 ? 問號前面的 a > b 如果是 False,則執行 cout << b << “ < “ << a << endl;,這個放在冒號後面,記得最後面要加上我們最愛最恨的分號歐!
總結
C++ 當中有四種條件語句的形式:
- if
- if-else
- else if
- switch
以下是 C++ 定義的 if 語句:
1 | if(boolean_expression) |
如果 boolean_expression 為 true,也就是布林運算式,那麼就執行中括號裡面的內容。
如果 boolean_expression 為 false,則跳過中括號,繼續往下執行內容。
布林運算式:如同比較運算式,回傳的值必定為布林值。
if () 小括號內只填了運算式本身,則預設是條件判斷 True,因為 True 就表示條件成立才會繼續執行。
else 一定會在 if 條件句的下面,else 會在上一個條件語句不成立的時候執行。
else if 就是在原本 else 的基礎上,多加一個 if 語句判斷條件。
巢狀語句就是 if 裡面還有一個 if 繼續判斷,如下程式碼:
1 | if( boolean_expression 1) |
else if…else 的形式如下:
1 | if (condition1) { |
switch = if-else if-else。
switch 在 C++ 的定義如下:
1 | switch(expression){ |
三元運算子(? :)的定義如下:
1 | Exp1 ? Exp2 : Exp3; |
Exp = Expression - 運算式
什麼意思呢?
如果當 Exp1 為 True,也就是條件成立,則執行 Exp2。
如果當 Exp1 為 False,也就是條件不成立,則執行 Exp3。
那我們可以這樣說:三元運算子 = if else 的簡化形式。
參考資料
三元運算子(Ternary Operator)和布林值混用的簡化方法 | by Yu-Hsien Yeh | Medium
switch statement (C++) | Microsoft Learn
Switch Statement in C++ - GeeksforGeeks
Decision Making in C (if , if..else, Nested if, if-else-if ) - GeeksforGeeks


