---
# System prepended metadata

title: C++_邏輯運算子

---

# 邏輯運算子
各位可否聽過**交集、聯集**呢?

邏輯運算子是用來**結合或否定布林值（true 或 false）的運算子**。
在程式設計中，我們常常需要根據多個條件來做出判斷，
邏輯運算子就是用來處理這些複雜的判斷邏輯。

## 常用的邏輯運算子
* **邏輯與** &&  (Shift+F7)： 當且僅當**兩個運算元都為** true 時，結果才為 true。
* **邏輯或** ||  (Shift+鎭)當**兩個運算元中至少有一個**為 true 時，結果就為true。
* **邏輯非** !  (Shift+ㄅ)將運算元的**TF(ture,fasle)值反轉**。
## 運算子表格

| 運算子 | 描述                                   | 例子                |
| ------ | -------------------------------------- | ------------------- |
| 邏輯與&&   | 兩個運算元都為 true 時才為 true        | (x > 5 && y < 10)   |
| 邏輯或\|\| | 只要有一個運算元為 true，結果就為 true | (x > 5 \|\| y < 10) |
|   邏輯非!     |        將運算元的TF值反轉                                |         !(x > 0)            |


## 邏輯運算子的應用
1. **if 語句**：
```cpp=
if (age >= 18 && isStudent) {
    // 只有當年齡大於等於 18 且是學生時，才執行這段程式碼
}
```

2. **while 迴圈**：
```cpp=
while (number != 0 && number % 2 == 0) {
    // 只要 number 不為 0 且是偶數，就繼續迴圈
}
```

3. **複雜條件判斷**：
```cpp=
if ((x > 0 && y > 0) || (x < 0 && y < 0)) {
    // x 和 y 必須同號
}
```

## 特性

* **短路求值**： 在 && 運算中，如果**第一個運算元為 false，則不會再評估第二個運算元**。
在 || 運算中，如果**第一個運算元為 true，則不會再評估第二個運算元**。

* **結合性**： 邏輯運算子通常是左結合的，也就是說，運算子會從**左到右**依次進行運算。

* **優先順序**： 邏輯非的優先級最高，然後是邏輯與，最後是邏輯或。

## NOTE

**布林值**： 邏輯運算子的運算元必須是布林值或可以隱式轉換為布林值的表達式。
**括號**： 為了避免歧義，建議使用括號來明確表達運算順序。
