# 【1-5】運算子
運算子(Operator)分成三種:比較運算子、算術運算子、邏輯運算子
聽起來好複雜,但其實運算子的概念其實大家從國小就建立了,不信的話,我們一起看下去!
## 比較運算子(Comparison Operators)

來個暖身題,看看你懂不懂比較運算子:
題目:請填入大於、小於或等於
1. 9 □ 5
2. -8 □ -7
3. 6 □ 6
<details> <summary>解答</summary>
```
1. >
2. <
3. =
```
</details>
沒錯!你已經學會比較運算子了喔!使用比較運算子用來陳述兩個值的關係,比較後會回傳 `true` 或 `false`,詳見下方表格介紹:
| 符號 | 意思 |
| -------- | -------- |
| `==` | 相等 |
| `>` | 大於 |
| `<` | 小於 |
| `>=` | 大於等於 |
| `<=` | 小於等於 |
| `!=` | 不等於 |
注意!相等是兩個等號,因為一個等號已經被拿去當變數賦值用了(宣告變數 `int a = 5`,就是用 `=` 把 5 這個值存到 `a` 當中),所以改用兩個等號。
還有,不等於我們用 `!` 來表示「非」,在後面邏輯運算子會再提到。
## 算術運算子(Arithmetic Operators)

一樣,我們從題目來學觀念:
題目:請透過四則運算計算出答案
1. 3 + 8 =
2. 15 - 7 =
3. 2 * 9 =
4. 36 / 3 =
<details> <summary>解答</summary>
```
1. 11
2. 8
3. 18
4. 12
```
</details>
這個應該不難,就不多贅述了。
---
接下來我們來學一個新的運算子——取餘數(%)

被除式÷除式=商式+餘式
這個應該大家都不陌生,舉個例子:25÷4=6…1
而這個 1 就是餘數
我們定義一個符號 % ,可以用來得到除法運算後的餘數
```
a%b = a÷b 的餘數
```
以剛才的例子,25%4 就會等於 1
---
最後是在程式當中的縮寫,因為程式常常出現把
* 原本的變數取出來
* 運算
* 再存回去
```cpp=
int x = 5;
x = x + 1; // 把 x 設為 x + 1,也就是 5 + 1 = 6,再把 6 存回去 x 當中
```
但這樣太麻煩,工程師總是很偷懶的,所以我們定義了一種符號表示方法:
```
變數名稱 運算子=數值
```
舉個例子:
```cpp=
int x = 5;
x += 1;
```
這樣就能把變數做算術運算子的操作,也給定數值,最後再存回去變數中。
又因為常常用到 `+=1` 和 `-=1`,所以特別定義 `++` 和 `--` 來表示。
```cpp=
int x = 5;
x++;
```
上方三段程式碼功能完全相同,只差在有沒有使用縮寫而已。下表整理常用算術運算子:
| 符號 | 意思 |
| -------- | -------- |
| `++` | 遞增(+1) |
| `╴╴` | 遞減(-1) |
| `+=` | 加完後存回 |
| `-=` | 減完後存回 |
| `*=` | 乘完後存回 |
| `/=` | 除完後存回 |
### Python對照
相同,只是沒有 `++` 和 `--`
## 邏輯運算子(Logical Operators)
試著回答下面幾個問題:
請問到底要拿什麼?
1. 幫我把水壺和手機拿過來
2. 幫我拿一支藍筆或黑筆
3. 幫我拿不冰的飲料
<details> <summary>解答</summary>
```
1. 水壺、手機(兩個都要拿)
2. 藍筆也可以,黑筆也可以
3. 飲料(但排除冰的飲料)
```
</details>
剛才示範的,就是三種邏輯運算子:且(`&&`)、或(`||`)、非(`!`)

我們可以把問題改寫一下,變成程式語言的樣子:
1. 水壺 `&&` 手機
2. 藍筆 `||` 黑筆
3. `!` 飲料
「且(`&&`)」若AB兩事件皆為 `true` 則回傳 `true`,反之回傳 `false`
「或(`||`)」若AB兩事件其中至少一件為 `true` 則回傳 `true`,反之回傳 `false`
「非(`!`)」代表反轉布林值,若A事件為 `true` 則回傳 `false`,反之回傳 `true`
| 符號 | 意思 |
| -------- | -------- |
| `&&` | 而且 |
| `||` | 或者 |
| `!` | 非 |
### Python對照
| C++ | Python |
| -------- | -------- |
| `&&` | `and` |
| `||` | `or` |
| `!` | `not` |
C++ 的編譯器其實也看得懂 `and`、`or`、`not` 這種寫法,只不過APCS觀念題中還是用 `&&`、`||` 和 `!` 呈現。
---
## 練習題
[U0005-要考幾分才會過](https://code.dali.tc.edu.tw/problem/U0005)
[U0006-穿搭組合](https://code.dali.tc.edu.tw/problem/U0006)
---
聯絡方式:codecodefunny@gmail.com
最後編修時間:2025/07/22 子柚筆