c语言各数据类型的范围与精度

各数据类型的范围与精度

基本类型字节数位数取值范围(二进制)取值范围(十进制)大概范围(十进制)精度(取决于尾数的范围)
byte1 byte8 bit − 2 7 -2^7 27 ~ 2 7 − 1 2^7 - 1 271 − 128 -128 128 ~ + 127 +127 +127
short2byte16bit − 2 15 -2^{15} 215 ~ 2 15 − 1 2^{15} - 1 2151 − 32767 -32767 32767 ~ + 32768 +32768 +32768 3.2 ∗ 1 0 4 3.2*10^4 3.2104
int4byte32bit − 2 31 -2^{31} 231 ~ 2 31 − 1 2^{31} - 1 2311 − 2147483648 -2147483648 2147483648 ~ + 2147483647 +2147483647 +2147483647 2.1 ∗ 1 0 9 2.1*10^9 2.1109
unsigned int4byte32bit 0 0 0 ~ 2 32 − 1 2^{32}-1 2321 0 0 0 ~ 4294967295 4294967295 4294967295 4.3 ∗ 1 0 9 4.3*10^9 4.3109
long long8byte64bit − 2 63 -2^{63} 263 ~ 2 63 − 1 2^{63} - 1 2631 − 9223372036854775808 -9223372036854775808 9223372036854775808 ~ + 9223372036854775807 +9223372036854775807 +9223372036854775807 9.2 ∗ 1 0 18 9.2*10^{18} 9.21018
unsigned long long8byte64bit 0 0 0 ~ 2 64 − 1 2^{64} - 1 2641 0 0 0 ~ 18446744073709551615 18446744073709551615 18446744073709551615 1.8 ∗ 1 0 19 1.8*10^{19} 1.81019
float4byte32bit − 3.402823466 × 1 0 38 -3.402823466×10^{38} 3.402823466×1038 ~ + 3.402823466 × 1 0 38 +3.402823466×10^{38} +3.402823466×1038 1 0 − 6 10^{-6} 106,即小数点后6位,超出的会进行舍入(即去掉),可以精确表示int 0 0 0 ~ 16777215 16777215 16777215(即 0 0 0 ~ 2 24 − 1 2^{24} - 1 2241)
double8byte64bit 1.7976931348623157 ∗ 1 0 308 1.7976931348623157*10^{308} 1.797693134862315710308 1 0 − 15 10^{-15} 1015,即小数点后15位,超出的会进行舍入(即去掉),可以精确表示long 0 0 0 ~ 9 , 007 , 199 , 254 , 740 , 991 9,007,199,254,740,991 9,007,199,254,740,991(即 0 0 0 ~ 2 53 − 1 2^{53} - 1 2531)
char2byte16bit 0 0 0 ~ 2 16 − 1 2^{16 }- 1 2161