# 分支跳转

URL: https://caijiao.org/cpp/basic/jump
Source: docs/cpp/basic/jump.md
Description: 本节将讲解 C++ 中的分支跳转语句，包括 'if'、'else'、'switch'、'break'、'continue' 和 'goto'，这些语句有助于控制程序的执行流程，执行不同的操作。

在 C++ 中，分支跳转语句允许程序根据条件选择不同的执行路径。通过这些语句，我们能够灵活控制程序的执行流程，处理不同的逻辑分支和跳转操作。

## `if` 语句

`if` 语句用于根据条件判断来执行不同的代码块。如果条件为 `true`，则执行对应的代码块，否则跳过。

```cpp
int a = 5;
if (a > 0) {
    cout << "a 是正数" << endl;
}
````

### `if-else` 语句

当需要根据条件执行两个不同的代码块时，可以使用 `else` 来处理条件不成立的情况。

```cpp
int a = -5;
if (a > 0) {
    cout << "a 是正数" << endl;
} else {
    cout << "a 不是正数" << endl;
}
```

### `else-if` 语句

当有多个条件需要判断时，可以使用 `else-if` 语句进行多条件判断。

```cpp
int a = 0;
if (a > 0) {
    cout << "a 是正数" << endl;
} else if (a < 0) {
    cout << "a 是负数" << endl;
} else {
    cout << "a 是零" << endl;
}
```

## `switch` 语句

`switch` 语句可以替代多个 `if-else if` 语句，用于判断一个变量是否等于某个特定的值。

```cpp
int a = 2;
switch (a) {
    case 1:
        cout << "a 是 1" << endl;
        break;
    case 2:
        cout << "a 是 2" << endl;
        break;
    default:
        cout << "a 不是 1 也不是 2" << endl;
}
```

### `switch` 语句的特点：

* `switch` 语句可以方便地处理多个条件判断，适用于多分支的情况。
* 每个 `case` 后面通常跟着一个 `break` 语句，用于跳出 `switch` 语句。如果没有 `break`，程序会继续执行下一个 `case`。

## `break` 语句

`break` 语句用于立即跳出当前的循环或 `switch` 语句，常用于提前终止循环或分支结构。

```cpp
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;  // 跳出循环
    }
    cout << "i 的值是: " << i << endl;
}
```

## `continue` 语句

`continue` 语句用于跳过当前循环的剩余部分，立即开始下一次循环。

```cpp
for (int i = 0; i < 5; i++) {
    if (i == 2) {
        continue;  // 跳过当前循环
    }
    cout << "i 的值是: " << i << endl;
}
```

## `goto` 语句

`goto` 语句允许程序无条件跳转到程序中的另一个位置。这种语句在实际编程中不常使用，应该避免过度依赖，避免让代码难以理解。

```cpp
#include <iostream>
using namespace std;

int main() {
    int i = 0;
    label:
    if (i < 5) {
        cout << "i 的值是: " << i << endl;
        i++;
        goto label;  // 跳转到 label
    }
    return 0;
}
```

### `goto` 语句的特点：

* `goto` 可以跳转到指定的标签位置，常用于跳出嵌套循环或复杂的条件结构。
* 由于 `goto` 会影响代码的可读性和维护性，因此一般建议尽量避免使用。

## 小结

* **`if`、`else` 和 `switch`** 是常用的分支语句，根据不同的条件执行不同的代码块。
* **`break` 和 `continue`** 控制语句帮助我们灵活地控制循环或分支的执行流程。
* **`goto`** 虽然功能强大，但通常不推荐使用，因为它会影响代码的可读性。

掌握这些分支跳转语句可以使你编写更加清晰、可维护的程序。
