# 基础数据类型

URL: https://caijiao.org/cpp/basic/types
Source: docs/cpp/basic/types.md
Description: 本节将介绍 C++ 中的基础数据类型，包括整数、浮点数、字符以及布尔类型，帮助你理解如何选择和使用合适的类型。

在 C++ 中，数据类型用于定义变量可以存储的数据种类。选择合适的数据类型可以提高程序的效率与可读性。C++ 提供了多种基础数据类型，下面我们将一一介绍。

## 整数类型

整数类型用于表示不带小数部分的数字。C++ 提供了几种整数类型，每种类型占用不同的内存空间。

### `int`（整数）

`int` 是最常用的整数类型，它通常用于表示不太大的整数，大小取决于编译器和平台，通常为 4 字节。

```cpp
int a = 10;  // 整数
````

### `short`（短整型）

`short` 用于表示较小的整数类型，通常占用 2 字节。

```cpp
short b = 5;
```

### `long`（长整型）

`long` 用于表示较大的整数类型，通常占用 4 字节或 8 字节（取决于平台）。

```cpp
long c = 1000000;
```

### `long long`（长长整型）

`long long` 类型用于表示更大的整数，通常占用 8 字节。

```cpp
long long d = 10000000000;
```

### `unsigned`（无符号类型）

如果我们只需要表示非负数，可以使用无符号类型（`unsigned`）。无符号类型的整数只能表示零或正数，通常是原类型的两倍范围。

```cpp
unsigned int e = 20;
```

## 浮点数类型

浮点数用于表示带小数点的数字。

### `float`（单精度浮点数）

`float` 用于表示单精度浮点数，通常占用 4 字节，适用于要求精度较低的浮点数。

```cpp
float f = 3.14f;
```

### `double`（双精度浮点数）

`double` 用于表示双精度浮点数，通常占用 8 字节，适用于需要更高精度的浮点数。

```cpp
double g = 3.1415926535;
```

### `long double`（长双精度浮点数）

`long double` 提供比 `double` 更高的精度，具体精度取决于平台。

```cpp
long double h = 3.141592653589793238;
```

## 字符类型

字符类型用于表示单个字符。

### `char`（字符）

`char` 用于存储单个字符，通常占用 1 字节。字符可以是字母、数字、符号或其他 Unicode 字符。

```cpp
char i = 'A';
```

### `unsigned char`（无符号字符）

`unsigned char` 用于存储无符号字符值，通常表示从 0 到 255 的范围。

```cpp
unsigned char j = 255;
```

## 布尔类型

布尔类型用于表示逻辑值，即真（`true`）或假（`false`）。

### `bool`（布尔类型）

`bool` 用于存储布尔值，通常占用 1 字节。`true` 表示真，`false` 表示假。

```cpp
bool k = true;
```

## 类型修饰符

C++ 提供了几种类型修饰符（`signed`、`unsigned`、`short`、`long`），用来调整数据类型的大小和范围。

### `signed` 和 `unsigned`

* `signed`：表示有符号类型，能表示负数和正数。
* `unsigned`：表示无符号类型，只能表示非负数。

### `short` 和 `long`

* `short`：表示较小的数值，通常占用 2 字节。
* `long`：表示较大的数值，通常占用 4 字节或 8 字节。

## 小结

C++ 提供了多种基础数据类型，帮助我们根据不同的需求选择合适的类型：

* **整数类型**：`int`、`short`、`long`、`long long`、`unsigned`。
* **浮点数类型**：`float`、`double`、`long double`。
* **字符类型**：`char` 和 `unsigned char`。
* **布尔类型**：`bool`。

正确地选择和使用这些数据类型是编写高效程序的基础。
