C++数据类型的存储位数与上下范围
存储位数
数据类型 |
存储位数 |
int |
32位补码,1位符号位,31位数值位 |
long long |
64位补码,1位符号位,63位数值位 |
float |
IEEE单精度浮点数32位,1位符号位,8位阶码位(移码),23位尾数位(原码) |
double |
IEEE双精度浮点数64位,1位符号位,11位阶码位(移码),52位尾数位(原码) |
char |
8位二进制数(1个字节) |
bool |
未定义 |
对于bool类型;存储位数没有定义,取决于编译器的实现;其他类型强制转换为bool时,0为false,非0为true。
上下范围
C++风格
数据类型 |
最小范围 |
最大范围 |
头文件 |
int |
numeric_limits::min() |
numeric_limits::max() |
<limits> |
long long |
numeric_limits::min() |
numeric_limits::max() |
<limits> |
数据类型 |
最小范围 |
最大范围 |
头文件 |
float |
-numeric_limits::max() |
numeric_limits::max() |
<limits> |
double |
-numeric_limits::max() |
numeric_limits::max() |
<limits> |
C风格
数据类型 |
最小范围 |
最大范围 |
头文件 |
int |
INT_MIN |
INT_MAX |
<climits> |
long long |
LONG_LONG_MIN或LLONG_MIN |
LONG_LONG_MAX或LLONG_MAX |
<climits> |
数据类型 |
最小范围 |
最大范围 |
头文件 |
float |
-FLT_MAX |
FLT_MAX |
<cfloat> |
double |
-DBL_MAX |
DBL_MAX |
<cfloat> |
对于浮点数来说,只能用标准库得到正数最小值、正数最大值,而负数最小值就是正数最大值的负数。也就是说,得到浮点数范围的方法是[正数最大值取负数, 正数最大值]
。
浮点数正数最小值是0,也就是说numeric_limits<float>::min()
、numeric_limits<double>::min()
、FLT_MIN
、DBL_MIN
4个量为0。