初学者有不少会对数据类型的取值范围有疑问,数据类型的取值范围关系到定义合适的变量,尤其是在进行嵌入式开发时更要清楚。这里有必要介绍一下各个数据类型的取值范围以及在内存中所占的长度。以下对常用的整形数据类型列了一个表(char在根本上也是整形)
16位机器 | 32位机器 | |||
---|---|---|---|---|
数据类型 | 所占位数 | 取值范围 | 所占位数 | 取值范围 |
Char | 8 | -128~127 | 8 | -128~127 |
int | 16 | -32768~32767 | 32 | -21亿~21亿 |
short | 16 | -32768~32767 | 16 | -32768~32767 |
long | 32 | -21亿~21亿 | 32 | -21亿~21亿 |
Unsigned char | 8 | 255 | 8 | 255 |
unsigned int | 16 | 0~65535 | 32 | 0~42亿 |
unsigned short | 16 | 0~65535 | 16 | 0~65535 |
unsigned long | 32 | 0~42亿 | 32 | 0~42亿 |
上表中的所占位数是我们有必要记住的,取值范围是怎么算的呢?
举例说明:
比如有符号char占8位,那么最高位是符号位,那么最大整数就是27-1,也就是127,最小负数就是-27。其它类型也是这样计算的。