- C++
C++ 基本数据类型的取值范围表格
- 2025-6-18 19:43:53 @
以下是 C++ 基本数据类型的取值范围表格,包含 C++ 标准规定的最小值 和 常见实现(32/64位系统)的具体范围。数据类型按 整数类型、浮点类型、布尔类型 和 字符类型 分类展示:
C++ 基本数据类型取值范围表
数据类型 | 占用字节 | 标准最小值 | 常见实现范围 | 说明 |
---|---|---|---|---|
整数类型 | ||||
bool |
1 | false (0)、true (1) |
布尔值,仅两个取值。 | |
char |
至少覆盖 -127 到 127 |
通常为 -128 到 127 (有符号) |
可能是有符号或无符号,取决于编译器。 | |
signed char |
-127 到 127 |
-128 到 127 |
明确为有符号字符类型。 | |
unsigned char |
0 到 255 |
明确为无符号字符类型。 | ||
short / short int |
2 | -32,767 到 32,767 |
-32,768 到 32,767 |
短整型。 |
unsigned short |
0 到 65,535 |
无符号短整型。 | ||
int |
4 | -2,147,483,647 到 2,147,483,647 |
-2,147,483,648 到 2,147,483,647 |
最常用的整型。 |
unsigned int |
0 到 4,294,967,295 |
无符号整型。 | ||
long / long int |
至少 4 | -2,147,483,647 到 2,147,483,647 |
通常为 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 |
长整型(64位系统)。 |
unsigned long |
0 到 4,294,967,295 |
通常为 0 到 18,446,744,073,709,551,615 |
无符号长整型(64位系统)。 | |
long long |
8 | -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 |
同上 | C++11 起支持的超长整型。 |
unsigned long long |
0 到 18,446,744,073,709,551,615 |
无符号超长整型。 | ||
浮点类型 | ||||
float |
4 | 最小正非零值:1.17549e-38 |
约 ±3.4e38 (6-7位有效数字) |
单精度浮点数。 |
double |
8 | 最小正非零值:2.22507e-308 |
约 ±1.8e308 (15-16位有效数字) |
双精度浮点数,最常用。 |
long double |
8/10/16 | 至少与 double 相同 |
通常为 ±1.18e4932 (18-19位有效数字) |
扩展精度浮点数,取决于编译器。 |
其他类型 | ||||
wchar_t |
2/4 | 至少覆盖所有基本多文种平面(BMP)的 Unicode 码点 | Windows:16位(覆盖 U+0000 到 U+FFFF) Linux/macOS:32位(覆盖整个 Unicode 范围) |
宽字符类型,用于存储 Unicode 字符。 |
char16_t |
2 | 0 到 65,535 |
用于存储 UTF-16 编码的 Unicode 字符 | C++11 起支持。 |
char32_t |
4 | 0 到 4,294,967,295 |
用于存储 UTF-32 编码的 Unicode 字符 |
说明
- 标准最小值:C++ 标准仅规定了各数据类型的最小取值范围,具体实现可能更大。
- 常见实现:表格中“常见实现范围”基于 64位系统(如 Windows、Linux、macOS) 的主流编译器(如 GCC、Clang、MSVC)。
- 有符号 vs 无符号:有符号类型使用最高位表示符号(正/负),无符号类型全部位用于表示数值。
- 获取范围的代码:
C++ 标准库提供了std::numeric_limits
模板类来查询各类型的范围,例如:#include <iostream> #include <limits> using namespace std; int main() { cout << "int 最小值: " << numeric_limits<int>::min() << endl; cout << "int 最大值: " << numeric_limits<int>::max() << endl; cout << "float 精度: " << numeric_limits<float>::digits10 << endl; return 0; }
通过这张表格,你可以快速了解 C++ 各种数据类型的取值范围,在选择数据类型时避免溢出或内存浪费。
0 条评论
目前还没有评论...