---
GA: G-RZYLL0RZGV
---
###### tags: `大一程設` `東華大學` `東華大學資管系` `基本程式概念` `資管經驗分享`
布林運算子一覽、if-else 條件判斷
===
[TOC]
# if-else
## 語法
```cpp=
if(條件){
該條件成立後,會做什麼
}
else{
該條件不成立,會做什麼
}
```
**補充:**
你可以單獨寫一個if判斷式就好,else不需要寫。
<span style="color:red;">**然而,當你寫了else則一定要幫他搭配一個if,簡單來說就是else不能單獨出現。</span>**
好了,想必看完上面大家都能明白程式怎麼寫了吧!我深信你們聰慧,但以防萬一,我還是要跟大家提一些if-else的運作機制。
-------------------------
## if-else裡的條件怎麼判斷?
### 條件判斷
#### comparison Operators
| C++ Notation | 中文 |
| ------------ | -------- |
| == | 等於 |
| != | 不等於 |
| < | 小於 |
| <= | 小於等於 |
| > | 大於 |
| >= | 大於等於 |
電腦會去看if裡面的條件是否成立,如果成立的話,會回傳true,不成立的時候則會回傳false。
```cpp=
if(true){
該條件成立後,會做什麼
}
else{
該條件不成立,會做什麼
}
```
orange學長剛剛跟我說妳們一定還是看不懂:angry::angry::angry:,所以我決定直接舉例給大家看吧!
**題目:** 有兩整數變數big跟small,這兩個變數分別存放兩值3跟1,接下來我們拿這兩個變數來使用if-else
```cpp=
int big=3;
//宣告data type為整數,名稱為big的變數,並在此變數存放值3
int small=1;
//宣告data type為整數,名稱為small的變數,並在此變數存放值1
if(big<small){
}
```
電腦在判斷條件 big<small 結束後,會回傳false,
**至於為什麼回傳false?**
那是因為3比1還要大,因此big<small的條件不成立。
綜合上述那些
```cpp=
if(big<small){
}
```
由 big<small 得到false :point_down:
```cpp=
if(false){
}
```
在電腦把條件判斷完後,會因為false而去執行else裡的程式碼,或是什麼都不做。
### 進階思維 - 條件判斷內發生指派會發生甚麼事? (important!)
大家應該還記得之前說「=」在程式語言是指派的意思,而等於只會在條件判斷的時候出現,而在 C++ 裡,等於要用兩個等號,like this「==」。
對就是那個討人厭的表情符號 :no_good:
```cpp=
int main(){
string a = "你是小明", b = "我是小華";
if(a == b){
cout << "我們一樣";
}
else{
cout << "我們不一樣";
}
}
```
應該非常淺顯易懂,而你說為什麼,沒有為什麼,這是規定,所以把他記起來比較好。
當然一定有人學不乖,會在條件判斷裡只放一個等號。
```cpp=
int main(){
int a = 5, b = 10;
if (a = b){
cout << "they\'re equal";
}
else{
cout << "they\'re not equal";
}
}
```
當然跳脫程式語言的框架,**直觀的話他會是等於,但要記得在 C++ 裡「=」就是指派,所以在第三行的這個判斷裡面,我反而是把 b 的值 assign 給 a,而這件事在程式裡永遠都是對的,因為沒有所謂的指派錯這種事,指派就是指派,所以這個條件永遠會成立**,因此會印出`they're equal`,但這很明顯就是錯的,所以請謹記「==」才是用在比較的哦。
### 數字判斷
#### if(0)、if(1)也可以判斷?該怎麼使用?
if(0)裡面的0代表false
if(1)裡面的1代表true。**其實不光是1,所有的正負數都可以**。
接著舉一個非常簡單的例子:point_down:
**題目:** 判斷該變數的值是否為0
```cpp=
int num;
if(num){
cout<<"num的值不是0";
}
else{
cout<<"num的值是0";
}
```
- 當num為0時,if(0) -->if(false)
電腦因此跑來執行else大括號裡的程式碼
```cpp=
else{
cout<<"num的值是0";
}
```
輸出結果:
```
num的值是0
```
---
- 當num為非0的整數時,則會得到true
電腦會執行if大括號裡的程式碼
```cpp=
if(num){
cout<<"num的值不是0";
}
```
輸出結果:
```
num的值不是0
```
---
# 布林值邏輯運算子
### && (AND)
**以兩個條件為例**
- 兩個條件都必須得到true才是true
- 得到一個或0個true則為false
| 條件1 | 條件2 | 結果 |
| -------- | -------- | -------- |
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
* 在計概裡面這個其實就是真值表
| 條件1 | 條件2 | 結果 |
| -------- | -------- | -------- |
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
### || (OR)
**以兩個條件為例**
- 只要一個或一個以上條件為true則得到true
- 0個true則為false
| 條件1 | 條件2 | 結果 |
| -------- | -------- | -------- |
| T | T | T |
| T | F | T |
| F | T | T |
| F | F | F |
真值表
| 條件1 | 條件2 | 結果 |
| -------- | -------- | -------- |
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
---
#### 用幾個字來分辨要使用 &&(AND) , ||(OR) 的時機
當你看到「都是」、「且」 那就直接使用 &&
當你看到「任一個」、「或」那就直接使用 ||
---
#### (AND) 舉個例子 :point_down:
**題目:** 判斷兩變數 num1 , num2 是否都大於 0
- 當num1,num2都大於0
```CPP=
int num1=1,num=2;
if((num1>0)&&(num2>0)){
cout<<"兩個都大於0";
}
```
```
num1>0 ->得到true
num2>0 ->得到true
```
true && true 得到 true,進到if裡面執行程式碼。
**輸出:**
```
兩個都大於0
```
- 當num1,num2只有其中一個大於0
```CPP=
int num1=1,num=0;
if((num1>0)&&(num2>0)){
cout<<"兩個都大於0";
}
else{
cout<<"並沒有都大於0";
}
```
```
num1>0 ->得到true
num2>0 ->得到false
```
true && false 得到 false,進到else裡面執行程式碼。
**輸出:**
```
並沒有都大於0
```
- 當num1,num2皆不大於0
```CPP=
int num1=0,num=0;
if((num1>0)&&(num2>0)){
cout<<"兩個都大於0";
}
else{
cout<<"並沒有都大於0";
}
```
```
num1>0 ->得到false
num2>0 ->得到false
```
false && false 得到 false,進到else裡面執行程式碼。
**輸出:**
```
並沒有都大於0
```
---
#### (OR) 舉個例子 :point_down:
**題目:** 判斷兩變數num1,num2是否有任一變數大於0
- 當num1,num2都大於0
```CPP=
int num1=1,num=2;
if((num1>0)||(num2>0)){
cout<<"任一或一個以上變數大於0";
}
```
```
num1>0 ->得到true
num2>0 ->得到true
```
true || true 得到 true,進到if裡面執行程式碼。
**輸出:**
```
任一或一個以上變數大於0
```
- 當num1,num2只有其中一個大於0
```CPP=
int num1=1,num=0;
if((num1>0)||(num2>0)){
cout<<"任一或一個以上變數大於0";
}
else{
cout<<"都沒有大於0";
}
```
```
num1>0 ->得到true
num2>0 ->得到false
```
true || false 得到 true,進到if裡面執行程式碼。
**輸出:**
```
任一或一個以上變數大於0
```
- 當num1,num2皆不大於0
```CPP=
int num1=0,num=0;
if((num1>0)||(num2>0)){
cout<<"任一或一個以上變數大於0";
}
else{
cout<<"都沒有大於0";
}
```
```
num1>0 ->得到false
num2>0 ->得到false
```
false || false 得到 false,進到else裡面執行程式碼。
**輸出:**
```
都沒有大於0
```