doc/notebook/docs/NOI竞赛大纲/二.C++程序设计/2.基本数据类型.md

103 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2. 基本数据类型
在编程中,**数据类型**用于定义变量可以存储的数据种类。掌握各种基本数据类型是理解变量、表达式和内存占用的基础。
---
## 【 1 】整数型:`int`、`long long`
### 🔹 `int` 【难度1】
- 用于表示一般范围的整数(如:-100, 0, 999 等)。
- 占用内存:通常为 **4字节32位**
- 范围(有符号):约 -2<sup>31</sup> 到 2<sup>31</sup>-1
```cpp
int age = 18;
```
### 🔹 `long long` 【难度1】
- 表示更大的整数,通常用于涉及大数计算(如阶乘、数据统计等)。
- 占用内存:**8字节64位**
- 范围(有符号):约 -2<sup>63</sup> 到 2<sup>63</sup>-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±387位有效数字 |
| `double` | 8 字节 | ~±1.7e±30815位有效数字 |
| `bool` | 1 字节 | true / false |
---
## ✅ 小结
- 整数类型用于计数、下标等离散数据;
- 实数类型用于精确度要求较高的计算;
- 字符类型用于文本字符操作;
- 布尔类型用于控制逻辑和条件判断。