# 原始数据类型

> 计算机科学 · CIE A-Level 9618
> 来源: https://www.owlsprep.com/zh/study/cie-9618-u10-primitive-data-types/

本子主题讲解CIE 9618大纲规定的核心基础原始数据类型。你将学习它们的性质、存储范围，以及如何为常见编程场景选择正确的数据类型。

**先修:** [基础计算机存储单位（位、字节）](https://www.owlsprep.com/zh/study/cie-9618-u03-data-representation-bits-bytes/)

## 学习目标

- 区分CIE 9618大纲定义的原始与非原始数据类型
- 记住大纲规定的四种核心原始数据类型
- 已知整数原始类型的位数，计算其可存储值范围
- 为给定应用场景选择并证明合适原始数据类型的合理性

## 原始数据类型 vs 非原始数据类型

原始数据类型是编程中数据存储最基础的构建块。所有更复杂的数据结构都是由原始数据类型组合而成的。其核心定义特征是：原始变量直接保存单个值，而非引用或其他值的集合。

**原始数据类型** — 编程语言提供的原生基础数据类型，存储单个值，不由其他数据类型构建。

*例:* 存储42的整数是原始类型；包含10个整数的数组是非原始类型。

> **tip**
>
> 在CIE 9618考试中，选择题和简答题总会要求你区分原始与非原始数据类型。

**例题:** 将下列各项分类为原始类型或非原始类型：(1) 存储测试结果的布尔型，(2) 存储用户名的字符串，(3) 存储温度的实数。

1. 记住：原始类型保存单个基础值，非原始类型由其他类型构建而成。
2. (1) 布尔型保存单个逻辑值，因此属于原始类型。
3. (2) 字符串是字符原始类型的集合，因此属于非原始类型（CIE 9618始终将字符串归类为非原始类型）。
4. (3) 实数保存单个数值，因此属于原始类型。

## CIE 9618核心原始数据类型

CIE 9618规定了四种你考试必须掌握的核心原始数据类型，每种都有明确用途和允许值范围。

- 整数：存储整数（正、负或零）
- 实数（浮点数）：存储包含小数部分的数字
- 字符：存储单个字母数字字符或符号
- 布尔型：仅存储两个可能逻辑值中的一个

**原始布尔型** — 只能保存代表逻辑真和逻辑假两个值之一的原始类型，用于条件检查和标志位。

*记法:* bool

*例:* isLoggedIn = true 存储用户当前是否登录系统的状态

**例题:** 为每个应用场景说明最合适的核心原始类型：(1) 班级中的学生人数，(2) 用户是否已登录，(3) 商品价格，(4) 姓氏的首字母。

1. 将每个应用场景与四种核心原始类型的性质匹配：
2. 1. 学生人数是没有小数部分的整数 → **整数**
3. 2. 登录状态只有是（真）或否（假） → **布尔型**
4. 3. 价格包含小数部分（例如 \$1.99） → **实数（浮点数）**
5. 4. 首字母是单个符号 → **字符**

> **考试提示:** 即使其他类型在现代编程语言中很常见，也请始终使用CIE 9618大纲中命名的四种核心类型。

## 原始数据类型的存储与值范围

根据实现不同，每种原始类型需要固定大小的存储空间（按位/字节计算）。存储空间大小直接决定了该类型可保存的可能值范围。

对于原始整数类型，值范围取决于它是有符号（支持负值）还是无符号（仅支持非负值）：

- n位无符号整数：范围 = $0$ 到 $2^n - 1$
- n位有符号整数：范围 = $-2^{n-1}$ 到 $2^{n-1} - 1$

**例题:** 16位有符号整数可存储的最大正值是多少？

1. 使用n位有符号整数最大值的公式：
2. $$\text{Maximum} = 2^{n-1} - 1$$
3. 代入 n = 16：
4. $$2^{16-1} - 1 = 2^{15} - 1 = 32768 - 1 = 32767$$
5. 最大正值为32767。

> **info**
>
> CIE 9618经常要求已知整数位数计算其值范围，因此请记住这两个公式。

## 选择并证明原始数据类型的合理性

考试中常见的较长题目会要求你为给定问题提出并证明原始类型选择的合理性。你必须将类型的性质与待存储数据的要求相匹配。

**例题:** 程序员需要存储拥有250个车位的城市停车场中的车辆数，请提出并证明合适的原始类型。

1. 1. 首先确定数据类型：车辆数始终是没有小数部分的整数。
2. 2. 这符合原始整数类型的核心定义。
3. 3. 检查范围：可能值为0到250，完全符合标准8位整数的范围（无符号最大值为255）。
4. 结论：最合适的原始类型是整数。

**考试命令词**

CIE 9618考试中本主题的常见命令术语：

- **Justify** — 你必须将你选择的类型与数据的要求关联起来 *(说明它存储整数/符合要求的范围)*

- **Distinguish** — 你必须明确说明原始与非原始数据类型的核心区别 *(指出原始类型保存单个值，非原始类型是集合)*

## 常见错误

- **错误做法:** 将字符串归类为原始数据类型
  - 原因: 许多编程语言将字符串视为原始类型，但CIE 9618将字符串定义为非原始类型，因为它们是字符的集合。
  - 正确做法: 在CIE 9618考试中始终将字符串归类为非原始类型。
- **错误做法:** 使用整数存储身高或体重这类测量值
  - 原因: 大多数测量值包含小数部分，无法作为整数准确存储。
  - 正确做法: 对于需要小数精度的测量值，使用原始实数（浮点数）。
- **错误做法:** 混淆有符号和无符号整数的值范围公式
  - 原因: 学生经常忘记有符号整数需要使用一位存储符号，因此降低了最大正值。
  - 正确做法: 记住：无符号 = 0 到 $2^n - 1$；有符号 = $-2^{n-1}$ 到 $2^{n-1} - 1$。
- **错误做法:** 使用原始字符类型存储完整电话号码
  - 原因: 一个字符只能存储一个数字/符号，因此无法存储整个10位以上的电话号码。
  - 正确做法: 使用非原始字符串存储电话号码这类数字序列。
- **错误做法:** 声称布尔型可以存储两个以上的值
  - 原因: 原始布尔型的核心定义性质就是，根据定义它只能有两个可能值。
  - 正确做法: 始终说明布尔型只能存储真或假。

## 速查表

| 原始类型 | 核心用途 | 示例值 |
| --- | --- | --- |
| 整数 | 整数（无小数） | 42 |
| 实数 | 带小数部分的数字 | 1.75 |
| 字符 | 单个字母数字符号 | 'Z' |
| 布尔型 | 逻辑真/假值 | true |
| 公式 | n位无符号范围 | 0 到 $2^n - 1$ |
| 公式 | n位有符号范围 | $-2^{n-1}$ 到 $2^{n-1} - 1$ |

## 下一步

现在你已经了解了原始数据类型，可以开始学习更复杂的非原始数据类型和数据结构了，这些是CIE 9618第10单元的核心内容。原始数据类型是编程、算法和数据表示中所有后续内容的基础构建块，因此掌握它们的性质和应用场景会让你更容易理解后续所有主题。考试中的常见题目会基于本主题要求你为完整程序选择合适的数据类型，因此这部分知识会在两张试卷中反复考察。接下来你将学习结构化非原始数据类型，例如数组和记录，它们通过将多个原始值组合成单个可用结构构建而成。

- [数组](https://www.owlsprep.com/zh/study/cie-9618-u10-arrays/)
- [记录](https://www.owlsprep.com/zh/study/cie-9618-u10-records/)
- [链表](https://www.owlsprep.com/zh/study/cie-9618-u10-linked-lists/)

---

来自 [OwlsPrep](https://www.owlsprep.com) —— A-Level / IB / AP / IGCSE 免费学习指南，依据官方考纲编写。原页面：https://www.owlsprep.com/zh/study/cie-9618-u10-primitive-data-types/
