---
# System prepended metadata

title: 【1-5】運算子

---

# 【1-5】運算子

運算子（Operator）分成三種：比較運算子、算術運算子、邏輯運算子

聽起來好複雜，但其實運算子的概念其實大家從國小就建立了，不信的話，我們一起看下去！


## 比較運算子（Comparison Operators）

![image](https://hackmd.io/_uploads/H1sqRwF4lg.png)

來個暖身題，看看你懂不懂比較運算子：

題目：請填入大於、小於或等於

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）

![image](https://hackmd.io/_uploads/HJyOAvKNll.png)
   
一樣，我們從題目來學觀念：

題目：請透過四則運算計算出答案

1. 3 + 8 =
2. 15 - 7 =
3. 2 * 9 =
4. 36 / 3 =

<details> <summary>解答</summary>

```
1. 11
2. 8
3. 18
4. 12
```
</details>

這個應該不難，就不多贅述了。

---

接下來我們來學一個新的運算子——取餘數（％）

![image](https://hackmd.io/_uploads/H1d3RPFElg.png)

被除式÷除式=商式+餘式

這個應該大家都不陌生，舉個例子：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>

剛才示範的，就是三種邏輯運算子：且（`&&`）、或（`||`）、非（`!`）

![image](https://hackmd.io/_uploads/BypeTDYVex.png)

我們可以把問題改寫一下，變成程式語言的樣子：

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 子柚筆