--- tags: 初階班 --- 用來對條件進行判斷,通常會用到`bool`變數或是關係運算子來當條件 # 語法 ## if ```cpp= if(判斷式A){ //若A成立時要執行的程式碼 } ``` ex: ```cpp= #include <iostream> using namespace std; int main(){ if(1 < 2){ cout << "1 < 2"; //1<2成立故會執行 } if(1 > 2){ cout << "1 > 2"; //1>2不成立故不執行 } } ``` 執行結果 ```cpp 1 < 2 ``` :::spoiler ***小技巧*** `if`的判斷是布林值 因此可以 ```cpp= if(true){ //此程式碼必執行 } ``` ::: ## else if & else ```cpp= #include <iostream> using namespace std; int main(){ if(判斷條件A){ //程式碼(若成立則執行) } else if(判斷條件B){ //程式碼(A不成立但B成立時執行) } else if(判斷條件C){ //程式碼(A不成立且B不成立時但C成立執行) } else{ //程式碼(上述條件皆不成立時執行) } } ``` else只能接在if或else if後 且只有當前面的條件全都不符合時才會執行 :::warning 一個`if`後接一連串`else if`的判斷只會執行最前面的一項(即使很多判斷條件滿足) :::spoiler 要執行好多行? 重新用`if` ::: :::info :::spoiler 例題:[a024:該減肥了!](https://dandanjudge.fdhs.tyc.edu.tw/ShowProblem?problemid=a024) 題目:給定n,若n>50則將n-1,否則不變 ```cpp= #include <iostream> using namespace std; int main(){ int n; cin >> n; if(n > 50) n--; cout << n; /** 也可以寫成下面這樣 if(n > 50) cout << n - 1; else cout << n; **/ } ``` ::: # 三元條件運算子 `(條件式)` `?` `程式碼A` `:` `程式碼B` 例如: ```cpp= 9 > 1? cout << "yes" << '\n': cout << "no"; ``` 意思是如果 9>1 則輸出 yes 並換行,否則輸出 no (不換行) 因為執行的優先順序,盡量加() # 補充 ## 0/1 其實if最後判斷是以1(true)/0(false)決定的 因此可以有下面的寫法 ```cpp= if(1) { cout << "yes"; //會執行,因為1是true } ``` ```cpp= if(12345) { cout << "Yes"; //會執行,因為對bool值來說0以外的都是true } ``` ```cpp= if(0) { cout << "no"; //不執行,因為0是false } ``` ```cpp= bool b = 1; //b = true if(b) { cout << "YES"; //會執行,因為b是true } ``` ```cpp= int n = 1; if(n) { cout << "YESSS"; //會執行,因為n非0 } ``` ```cpp= int k = 0; if(k) { cout << "No"; //不執行,因為k=0=false } ``` 或者其實可以將`if(n)`理解成`if(n != 0)`,效果一樣 而這種判斷條件的寫法不論在`if`或之後的迴圈都通用