以下是 C++ 基本数据类型的定义、大小(常见实现)及其取值范围的总结表。需注意,具体大小可能因编译器和平台而异(如 32 位 vs 64 位系统),建议使用 sizeof()
或 <climits>
、<cfloat>
头文件中的宏获取具体值。
整数类型
类型 | 大小(字节) | 取值范围(常见实现) | 标准最小要求 |
---|---|---|---|
signed char |
1 | -128 到 127 | 至少 8 位(-2⁷ 到 2⁷-1) |
unsigned char |
1 | 0 到 255 | 至少 8 位(0 到 2⁸-1) |
short |
2 | -32,768 到 32,767 | 至少 16 位(-2¹⁵ 到 2¹⁵-1) |
unsigned short |
2 | 0 到 65,535 | 至少 16 位(0 到 2¹⁶-1) |
int |
4 | -2,147,483,648 到 2,147,483,647 | 至少 16 位(通常为 32 位) |
unsigned int |
4 | 0 到 4,294,967,295 | 同 int 的无符号版本 |
long |
4 或 8 | -2³¹ 到 2³¹-1(4 字节)或更大 | 至少 32 位 |
unsigned long |
4 或 8 | 0 到 2³²-1(4 字节)或更大 | 同 long 的无符号版本 |
long long |
8 | -9,223,372,036,854,775,808 到 ... | 至少 64 位(-2⁶³ 到 2⁶³-1) |
unsigned long long |
8 | 0 到 18,446,744,073,709,551,615 | 0 到 2⁶⁴-1 |
字符类型
类型 | 大小(字节) | 说明 |
---|---|---|
char |
1 | 可能是 signed char 或 unsigned char (由编译器决定) |
wchar_t |
2 或 4 | 宽字符,支持更大字符集(如 Unicode) |
浮点类型
类型 | 大小(字节) | 取值范围(IEEE 754 常见值) | 精度 |
---|---|---|---|
float |
4 | ±1.18e-38 到 ±3.4e38 | 6-7 位小数 |
double |
8 | ±2.23e-308 到 ±1.79e308 | 15-16 位小数 |
long double |
8, 12, 16 | 范围 ≥ double ,具体依赖实现 |
通常 ≥ double |
布尔类型
类型 | 大小(字节) | 取值范围 |
---|---|---|
bool |
1(通常) | true 或 false |
注意事项
-
平台依赖性:
int
和long
的大小可能因系统不同而变化(如 Windows 64 位中long
为 4 字节,Linux 64 位中为 8 字节)。- 使用
sizeof(type)
直接获取当前平台的大小(如sizeof(int)
)。
-
标准头文件:
<climits>
包含整数类型的范围宏(如INT_MAX
、LLONG_MIN
)。<cfloat>
包含浮点类型的范围宏(如FLT_MAX
、DBL_EPSILON
)。
-
固定宽度类型 :
C++11 引入了
<cstdint>
中的固定大小类型(如int32_t
、uint64_t
),明确指定位数。
示例代码
cpp
#include <iostream>
#include <climits>
#include <cfloat>
int main() {
std::cout << "int 大小: " << sizeof(int) << " 字节" << std::endl;
std::cout << "int 最大值: " << INT_MAX << std::endl;
std::cout << "double 最小值: " << DBL_MIN << std::endl;
return 0;
}
如果需要更精确的平台特定信息,请结合编译器和系统文档进行验证。