基本数据类型
中等4#基本数据类型#数据类型
概述:C++ 中的基本数据类型(内置类型)是语言直接支持的基石,通常分为以下几大类。需要特别注意:C++ 标准只规定了类型的最小字节数,实际大小取决于编译器和平台(如 64 位 vs 32 位)。
C++ 中的基本数据类型(内置类型)是语言直接支持的基石,通常分为以下几大类。需要特别注意:C++ 标准只规定了类型的最小字节数,实际大小取决于编译器和平台(如 64 位 vs 32 位)。
以下是完整的分类总结:
1. 整型(Integer Types)
用于存储整数,分为**有符号(signed,默认)和无符号(unsigned)**两种。
| 类型关键字 | 标准保证最小字节 | 常见平台大小(64位) | 取值范围(以常见大小为例) |
|---|---|---|---|
short / short int | 2 字节 | 2 字节 | -32,768 ~ 32,767 |
unsigned short | 2 字节 | 2 字节 | 0 ~ 65,535 |
int | 2 字节 | 4 字节 | -2,147,483,648 ~ 2,147,483,647 |
unsigned int | 2 字节 | 4 字节 | 0 ~ 4,294,967,295 |
long / long int | 4 字节 | Windows: 4,Linux: 8 | 视平台而定 |
unsigned long | 4 字节 | 视平台而定 | 视平台而定 |
long long (C++11起) | 8 字节 | 8 字节 | -9.22e18 ~ 9.22e18 |
unsigned long long | 8 字节 | 8 字节 | 0 ~ 1.84e19 |
2. 字符型(Character Types)
用于存储字符(本质上存储的是 ASCII 码或 Unicode 码点)。
| 类型 | 说明 | 大小 |
|---|---|---|
char | 最基本字符型。注意:char 是否有符号(signed)由编译器决定,既不是 signed char 也不是 unsigned char,而是第三种独立类型。 | 1 字节(永远) |
signed char | 显式有符号字符(范围通常 -128~127) | 1 字节 |
unsigned char | 显式无符号字符(范围 0~255),常用于存储二进制数据(字节流) | 1 字节 |
wchar_t | 宽字符,用于支持宽字节编码(如 Unicode),大小因平台而异(Windows 为 2 字节,Linux 为 4 字节) | 2 或 4 字节 |
char16_t (C++11) | UTF-16 字符,用于 Unicode 编码 | 2 字节 |
char32_t (C++11) | UTF-32 字符,用于 Unicode 编码 | 4 字节 |
char8_t (C++20) | UTF-8 字符 | 1 字节 |
3. 浮点型(Floating-Point Types)
用于存储小数(实数),遵循 IEEE 754 标准。
| 类型 | 精度 | 常见大小 | 有效位数(十进制) |
|---|---|---|---|
float | 单精度 | 4 字节 | 约 6~7 位 |
double | 双精度(默认浮点字面量类型) | 8 字节 | 约 15~16 位 |
long double | 扩展精度 | 视平台而定(Windows 为 8 字节,Linux 常为 16 字节) | 视平台而定(Linux 下约 18~19 位) |
4. 布尔型(Boolean Type)
| 类型 | 说明 | 大小 |
|---|---|---|
bool | 逻辑值,只有 true(真)和 false(假)两个值。任何非零值赋值给 bool 都会被转为 true。 | 通常 1 字节(C++ 标准未强制规定,但一般为 1) |
5. 无值型(Void Type)
| 类型 | 说明 |
|---|---|
void | 表示没有值。常用于:<br>1. 函数无返回值(void func())<br>2. 泛型指针(void* 指向未知类型的内存)<br>注意:不能声明 void 类型的变量。 |
6. 补充:类型修饰符(Type Modifiers)
除了上述基础关键字,你还可以使用修饰符来调整存储空间和符号:
signed(有符号,默认)unsigned(无符号,数值翻倍但无法表示负数)short(短)long(长)
组合示例:unsigned long long int 是合法的。
核心要点(易错点)
char的特殊性:char、signed char、unsigned char是三种不同的类型,尽管大小相同。sizeof操作符:想确认当前平台某类型的确切大小,用sizeof(int)查看。- 字面量后缀:写小数时默认是
double,想要float请加f(如3.14f),想要long double加L(如3.14L)。 - C++11 标准库扩展:为了精确控制大小,强烈推荐使用
<cstdint>头文件中的定宽类型,如int32_t、uint64_t,这样跨平台时更安全。