CC++ & Algorithm

基本数据类型

中等4
#基本数据类型#数据类型
语言版本:C++Python
概述:C++ 中的基本数据类型(内置类型)是语言直接支持的基石,通常分为以下几大类。需要特别注意:C++ 标准只规定了类型的最小字节数,实际大小取决于编译器和平台(如 64 位 vs 32 位)。

C++ 中的基本数据类型(内置类型)是语言直接支持的基石,通常分为以下几大类。需要特别注意:C++ 标准只规定了类型的最小字节数,实际大小取决于编译器和平台(如 64 位 vs 32 位)

以下是完整的分类总结:

1. 整型(Integer Types)

用于存储整数,分为**有符号(signed,默认)无符号(unsigned)**两种。

类型关键字标准保证最小字节常见平台大小(64位)取值范围(以常见大小为例)
short / short int2 字节2 字节-32,768 ~ 32,767
unsigned short2 字节2 字节0 ~ 65,535
int2 字节4 字节-2,147,483,648 ~ 2,147,483,647
unsigned int2 字节4 字节0 ~ 4,294,967,295
long / long int4 字节Windows: 4,Linux: 8视平台而定
unsigned long4 字节视平台而定视平台而定
long long (C++11起)8 字节8 字节-9.22e18 ~ 9.22e18
unsigned long long8 字节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 是合法的。


核心要点(易错点)

  1. char 的特殊性charsigned charunsigned char 是三种不同的类型,尽管大小相同。
  2. sizeof 操作符:想确认当前平台某类型的确切大小,用 sizeof(int) 查看。
  3. 字面量后缀:写小数时默认是 double,想要 float 请加 f(如 3.14f),想要 long doubleL(如 3.14L)。
  4. C++11 标准库扩展:为了精确控制大小,强烈推荐使用 <cstdint> 头文件中的定宽类型,如 int32_tuint64_t,这样跨平台时更安全。