如下表所示:
数据类型 | 所占字节 | 最小值 | 最大值 |
---|---|---|---|
char | 1 | -128 | 127 |
unsigned char | 1 | 0 | 255 |
short | 2 | -32768 | 32767 |
unsigned short | 2 | 0 | 65535 |
int | 4 | -2147483648 | 2147483647 |
unsigned int | 4 | 0 | 4294967295 |
long(32位程序) | 4 | -2147483648 | 2147483647 |
unsigned long(32位程序) | 4 | 0 | 4294967295 |
long(64位程序) | 8 | -9223372036854775808 | 9223372036854775807 |
unsigned long(64位程序) | 8 | 0 | 18446744073709551615 |
int32_t | 4 | -2147483648 | 2147483647 |
uint32_t | 4 | 0 | 4294967295 |
int64_t | 8 | -9223372036854775808 | 9223372036854775807 |
uint64_t | 8 | 0 | 18446744073709551615 |
从表中可以看出,需要注意的是long的所占字节数,其在32位中和int是一样的,在64位中为8字节,所以为了提升程序在不同系统上的移植性,最好使用int64_t,其具有不变性。
此外,还需要注意一下有符号的最大值的绝对值比最小值的绝对值小1,这是因为有符号数中的0属于正数范围。
可以利用库函数<limits.h>中的INT_MAX,INT_MIN等常量来查看类型在最值。
有一个需要建议记住的是int类型的最值,可以简单的记为2乘10的10次方。