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

各数据类型的范围与精度

基本类型字节数位数取值范围(二进制)取值范围(十进制)大概范围(十进制)精度(取决于尾数的范围)
byte1 byte8 bit − 2 7 -2^7 −27 ~ 2 7 − 1 2^7 - 1 27−1 − 128 -128 −128 ~ + 127 +127 +127
short2byte16bit − 2 15 -2^{15} −215 ~ 2 15 − 1 2^{15} - 1 215−1 − 32767 -32767 −32767 ~ + 32768 +32768 +32768 3.2 ∗ 1 0 4 3.2*10^4 3.2∗104
int4byte32bit − 2 31 -2^{31} −231 ~ 2 31 − 1 2^{31} - 1 231−1 − 2147483648 -2147483648 −2147483648 ~ + 2147483647 +2147483647 +2147483647 2.1 ∗ 1 0 9 2.1*10^9 2.1∗109
unsigned int4byte32bit 0 0 0 ~ 2 32 − 1 2^{32}-1 232−1 0 0 0 ~ 4294967295 4294967295 4294967295 4.3 ∗ 1 0 9 4.3*10^9 4.3∗109
long long8byte64bit − 2 63 -2^{63} −263 ~ 2 63 − 1 2^{63} - 1 263−1 − 9223372036854775808 -9223372036854775808 −9223372036854775808 ~ + 9223372036854775807 +9223372036854775807 +9223372036854775807 9.2 ∗ 1 0 18 9.2*10^{18} 9.2∗1018
unsigned long long8byte64bit 0 0 0 ~ 2 64 − 1 2^{64} - 1 264−1 0 0 0 ~ 18446744073709551615 18446744073709551615 18446744073709551615 1.8 ∗ 1 0 19 1.8*10^{19} 1.8∗1019
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} 10−6,即小数点后6位,超出的会进行舍入(即去掉),可以精确表示int 0 0 0 ~ 16777215 16777215 16777215(即 0 0 0 ~ 2 24 − 1 2^{24} - 1 224−1)
double8byte64bit 1.7976931348623157 ∗ 1 0 308 1.7976931348623157*10^{308} 1.7976931348623157∗10308 1 0 − 15 10^{-15} 10−15,即小数点后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 253−1)
char2byte16bit 0 0 0 ~ 2 16 − 1 2^{16 }- 1 216−1