# 2. 基本数据类型
在编程中,**数据类型**用于定义变量可以存储的数据种类。掌握各种基本数据类型是理解变量、表达式和内存占用的基础。
---
## 【 1 】整数型:`int`、`long long`
### 🔹 `int` 【难度:1】
- 用于表示一般范围的整数(如:-100, 0, 999 等)。
- 占用内存:通常为 **4字节(32位)**
- 范围(有符号):约 -231 到 231-1
```cpp
int age = 18;
```
### 🔹 `long long` 【难度:1】
- 表示更大的整数,通常用于涉及大数计算(如阶乘、数据统计等)。
- 占用内存:**8字节(64位)**
- 范围(有符号):约 -263 到 263-1
```cpp
long long population = 7800000000;
```
> 💡 提示:在程序中使用大整数时建议使用 `long long` 类型,并搭配 `ll` 作为字面量后缀(如:`1000000000ll`)。
---
## 【 1 】实数型:`float`、`double`
### 🔹 `float` 【难度:1】
- 表示**单精度**浮点数,精度约为小数点后6位。
- 占用内存:**4字节**
```cpp
float pi = 3.14159f;
```
### 🔹 `double` 【难度:1】
- 表示**双精度**浮点数,精度约为小数点后15位。
- 占用内存:**8字节**
```cpp
double e = 2.718281828459;
```
> ⚠ 注意:浮点数在计算中存在精度误差,判断是否相等时不要直接用 `==`,而应判断差值是否在一个误差范围内。
---
## 【 1 】字符型:`char`
- 用于表示单个字符,如 `'A'`、`'b'`、`'1'`。
- 实际上是存储字符的 **ASCII编码值**(整数)。
- 占用内存:**1字节**
```cpp
char grade = 'A';
cout << (int)grade << endl; // 输出字符的 ASCII 编码:65
```
> 💡 字符用单引号包裹(如:`'X'`),而不是双引号。
---
## 【 1 】布尔型:`bool`
- 只包含两个取值:`true`(真)、`false`(假)
- 用于逻辑判断和条件语句
- 占用内存:**1字节**(虽然只需要1位,但通常按字节处理)
```cpp
bool isPassed = true;
if (isPassed) {
cout << "考试通过!" << endl;
}
```
> ✅ 在 C++ 中,`true` 等价于 `1`,`false` 等价于 `0`。
---
## 🧠 扩展知识:类型对应内存大小与范围(一般情况下)
| 类型 | 大小(字节) | 常规范围(有符号) |
|------------|---------------|-----------------------------|
| `char` | 1 字节 | -128 ~ 127 |
| `int` | 4 字节 | -2,147,483,648 ~ 2,147,483,647 |
| `long long`| 8 字节 | 超大整数范围 |
| `float` | 4 字节 | ~±3.4e±38(7位有效数字) |
| `double` | 8 字节 | ~±1.7e±308(15位有效数字) |
| `bool` | 1 字节 | true / false |
---
## ✅ 小结
- 整数类型用于计数、下标等离散数据;
- 实数类型用于精确度要求较高的计算;
- 字符类型用于文本字符操作;
- 布尔类型用于控制逻辑和条件判断。