上一篇文章中提到了类型这一概念,在使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当我们创建一个变量时,就会在内存中保留一些空间。我们可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。
基本内置类型:
C++定义了一套包括算术类型(arithmetic type)和空类型(void)在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值,仅用于特殊场合,例如:当一个函数不返回任何值时,选择空类型作为返回类型。
算术类型:
算术类型分为两类:整型(integral type)和浮点型。其中,字符和布尔类型属于整形。
算术类型的尺寸在不同机器上有差别,下面是C++标准规定的尺寸的最小值。
| 类型 | 含义 | 最小尺寸 |
| bool | 布尔类型 | 未定义 |
| char | 字符 | 8位 |
| wchar_t | 宽字符 | 16位 |
| char16_t | Unicode字符 | 16位 |
| char32_t | Unicode字符 | 32位 |
| short | 短整型 | 16位 |
| int | 整型 | 16位 |
| long | 长整型 | 32位 |
| long long | 长整型 | 64位 |
| float | 单精度浮点数 | 6位有效数字 |
| double | 双精度浮点数 | 10位有效数字 |
| long double | 扩展精度浮点数 | 10位有效数字 |
布尔值(bool)的取值是真(true)或假(false)。
一个char的大小和一个机器字节一样。
一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大。
大多数编译器实现了浮点型的更高的精确度。
带符号类型和无符号类型:
除去布尔型和扩展字符型,其他的整型可以划分为带符号的和无符号的。带符号类型可以表示正数、负数和0,无符号类型仅能表示非负数。
类型int、short、long和long long都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型。
与其他整型不同,字符型被分为:char、signed char和unsigned char三种。但要注意,char与signed char不同,类型char实际上会表现为带符号的或不带符号的,这取决于编译器。
如何选择基本类型:
- 明确知晓数值不可能为负时,使用无符号类型。
- 使用int进行数值运算时,short一般太小,long和int差不多,因此数值超过int时直接使用long long。
- 在算数表达式中不要使用char和bool。
- 执行浮点数运算选用double。
派生数据类型:
| 数据类型 | 描述 | 示例 |
|---|---|---|
数组 | 相同类型元素的集合 | int arr[5] = {1, 2, 3, 4, 5}; |
指针 | 存储变量内存地址的类型 | int* ptr = &x; |
引用 | 变量的别名 | int& ref = x; |
函数 | 函数类型,表示函数的签名 | int func(int a, int b); |
结构体 | 用户定义的数据类型,可以包含多个不同类型的成员 | struct Point { int x; int y; }; |
类 | 用户定义的数据类型,支持封装、继承和多态 | class MyClass { ... }; |
联合体 | 多个成员共享同一块内存 | union Data { int i; float f; }; |
枚举 | 用户定义的整数常量集合 | enum Color { RED, GREEN, BLUE }; |
小结:学习了C++的基本数据类型和使用方法。

Comments NOTHING