# 逻辑与关系运算符

URL: https://caijiao.org/cpp/basic/logical-relational
Source: docs/cpp/basic/logical-relational.md
Description: 本节将介绍 C++ 中的逻辑运算符和关系运算符，帮助你理解如何处理布尔值以及进行条件判断。

C++ 中的逻辑运算符和关系运算符用于进行条件判断和逻辑运算。它们帮助程序员在程序中进行布尔值操作以及条件控制。

## 关系运算符

关系运算符用于比较两个数或表达式的大小关系，结果是一个布尔值（`true` 或 `false`）。

### 1. 等于运算符 `==`

检查两个操作数是否相等。

```cpp
int a = 5, b = 3;
bool result = (a == b);  // result = false
````

### 2. 不等于运算符 `!=`

检查两个操作数是否不相等。

```cpp
int a = 5, b = 3;
bool result = (a != b);  // result = true
```

### 3. 大于运算符 `>`

检查左边的操作数是否大于右边的操作数。

```cpp
int a = 5, b = 3;
bool result = (a > b);  // result = true
```

### 4. 小于运算符 `<`

检查左边的操作数是否小于右边的操作数。

```cpp
int a = 5, b = 3;
bool result = (a < b);  // result = false
```

### 5. 大于等于运算符 `>=`

检查左边的操作数是否大于或等于右边的操作数。

```cpp
int a = 5, b = 3;
bool result = (a >= b);  // result = true
```

### 6. 小于等于运算符 `<=`

检查左边的操作数是否小于或等于右边的操作数。

```cpp
int a = 5, b = 3;
bool result = (a <= b);  // result = false
```

## 逻辑运算符

逻辑运算符用于执行布尔值运算，通常与条件判断一起使用。

### 1. 逻辑与运算符 `&&`

当两个操作数都为 `true` 时，结果为 `true`，否则为 `false`。

```cpp
bool a = true, b = false;
bool result = (a && b);  // result = false
```

### 2. 逻辑或运算符 `||`

当至少一个操作数为 `true` 时，结果为 `true`，否则为 `false`。

```cpp
bool a = true, b = false;
bool result = (a || b);  // result = true
```

### 3. 逻辑非运算符 `!`

用于取反操作，如果操作数为 `true`，则结果为 `false`，反之亦然。

```cpp
bool a = true;
bool result = !a;  // result = false
```

## 运算符优先级

关系运算符和逻辑运算符有各自的优先级，关系运算符的优先级高于逻辑运算符。例如：

```cpp
int a = 5, b = 3, c = 8;
bool result = (a > b && c > a);  // result = true, 先判断关系运算符再判断逻辑运算符
```

为了避免优先级带来的歧义，可以使用括号明确表达式的顺序。

```cpp
bool result = (a > b) && (c > a);  // 明确先计算关系运算符再进行逻辑运算符
```

## 小结

* **关系运算符** 用于比较两个数值的大小关系，结果是布尔值。
* **逻辑运算符** 用于布尔值操作，支持与、或、非等运算。
* 运算符优先级决定了运算顺序，使用括号可以避免混淆。

通过合理运用这些运算符，可以在 C++ 中实现更复杂的条件判断和逻辑控制。
