数据类型 | 字节数 | 位数 | 范围 |
---|---|---|---|
char | 1 | 8位 | -128-127 ( − 2 7 − 2 7 − 1 ) (-2^7 - 2^7-1) (−27−27−1) |
signed char | 1 | 8位 | -128-127 ( − 2 7 − 2 7 − 1 ) (-2^7 - 2^7-1) (−27−27−1) |
unsigned char | 1 | 8位 | 0-255 ( 0 − 2 8 − 1 ) (0 - 2^8-1) (0−28−1) |
short int | 2 | 16位 | -32768~32767 ( − 2 15 − 2 15 − 1 ) (-2^{15} - 2^{15}-1) (−215−215−1) |
unsigned short int | 2 | 16位 | 0-65535 ( 0 − 2 16 − 1 ) (0 - 2^{16}-1) (0−216−1) |
int(这里是16位) | 2 | 16位 | -32768-32767 ( − 2 15 − 2 15 − 1 ) (-2^{15} - 2^{15}-1) (−215−215−1) |
unsigned int (这里是16位) | 2 | 16位 | 0-65535 ( 0 − 2 16 − 1 ) (0 - 2^{16}-1) (0−216−1) |
long int (这里是32位) | 4 | 32位 | -2147483648-2147483647 ( − 2 31 − 2 31 − 1 ) (-2^{31} - 2^{31}-1) (−231−231−1) |
unsigned long int (这里是32位) | 4 | 32位 | 0-4294967295 ( 0 − 2 32 − 1 ) (0 - 2^{32}-1) (0−232−1) |
注意下面一句话:short int至少16位,long int至少32位。至于缺省的int究竟是16位还是32位,或者是其他值,则由编译器设计者决定。通常这个选择的缺省值是这种机器最为自然(高效)的位数。
具体多少位可以用sizeof函数打印查看一下。具体可以参考
C语言int的取值范围
参考
- 《C和指针》