首先强调:
char、int、long、long long、float、double等数据类型的取值范围跟他们的字节大小有关,而字节大小又跟平台的位数有关,下表列出char、int、long、long long、float、double等数据类型在不同平台的字节大小:
C类型 | 16位机器 | 32位机器 | 64位机器 |
char | 1 | 1 | 1 |
short | 2 | 2 | 2 |
int | 2 | 4 | 4 |
long | 4 | 4 | 8 |
long long | N/A | 8 | 8 |
char*、int*等指针型 | 2 | 4 | 8 |
float | 4 | 4 | 4 |
double | 8 | 8 | 8 |
以32位机器为例说明各个数据类型的取值范围:
在C语言中有基本数据类型一般分为有符号整型、无符号整型、浮点型和指针型。
(1)有符号整数类型
类型名称 | 字节数 | 取值范围 |
signed char | 1 | -2^7到2^7-1 |
short int或short | 2 | -2^15到2^15-1 |
int | 4 | -2^31到2^31-1 |
long int或long | 4 | -2^31到2^31-1 |
long long int或long long | 8 | -2^63到2^63-1 |
(2)无符号整数类型
类型名称 | 字节数 | 取值范围 |
usigned char | 1 | 0到2^8-1 |
usigned short int或usigned short | 2 | 0到2^16-1 |
usigned int | 4 | 0到2^32-1 |
usigned long int或usigned long | 4 | 0到2^32-1 |
usigned long long int或usigned long long | 8 | 0到2^64-1 |
(3)浮点型
类型名称 | 字节数 | 取值范围 |
float | 4 | -3.40E+38到+3.40E+38(精确到6位小数) |
double | 8 | -/+1.7e308(精确到15位小数) |
long double | 12 | -/+1.19e4932(精确到18位小数) |