常见类型数值范围
char/signed char/int/long long 的整数范围整理如下表:
| 类型 | 所占字节 | 最小值 | 最大值 |
|---|---|---|---|
| char | 1 | 0 | 127 |
| unsigned char | 1 | 0 | 255 |
| signed char | 1 | -128 | 127 |
| unsigned short | 2 | 0 | 65535(常用) |
| short int | 2 | -32768 | 32767(常用) |
| unsigned int | 4 | 0 | 4294967295 (2^32 - 1) |
| int / signed int | 4 | -2147483648 (-2^31) | 2147483647 (2^31 - 1) |
| long int / long | 4 | -2147483648 | 2141483647 |
| unsigned long long | 8 | 0 | 2^64 - 1 |
| long long int | 8 | -9223372036854775808 | 9223372036854775807 (2^63 - 1) |
说明:一个Byte占8bit,unsigned int类型,则占32bit,可表示的最大正整数是2^32 - 1,因为含0,所以要减一。而signed int类型,由于最高位为符号位,故只有31位有效,可表示最大正整数为2^31 - 1,最小负数为-2^31。
数据类型范围宏定义
所需头文件limits.h:
- C:
#include <limits.h> - C++:
#include <climits>
C语言各个类型的最大值和最小值的宏定义如下,有了这个就再也不用记那么多范围啦,可直接引用最值范围对应的宏即可:
| 宏定义 | 类型 | 最值 |
|---|---|---|
| CHAR_MAX | char | 127 |
| CHAR_MIN | char | -128 |
| SCHAR_MAX | signed char | 127 |
| SCHAR_MIN | signed char | -128 |
| UCHAR_MAX | unsigned char | 255 |
| SHRT_MAX | short | 32767 |
| SHRT_MIN | short | -32768 |
| USHRT_MAX | unsigned short | 65535 |
| INT_MAX | int | 2147483647 |
| INT_MIN | int | -2147483648 |
| UINT_MAX | unsigned int | 4294967295U |
| UINT_MIN | unsigned int | 0 |
| LONG_MAX | long | 9223372036854775807 |
| LONG_MIN | long | -9223372036854775808 |
| ULONG_MAX | unsigned long | 18446744073709551615 |
| FLT_MIN | float | 保留全部精度的正数最小值 |
| FLT_MAX | float | 正数最大值 |
| FLT_MANT_DIG | float | 尾数 |
| FLT_DIG | float | 最少有效数字位数 |
| FLT_MIN_10_EXP | float | 带有全部有效数的的负指数的最小值(以10为底) |
| FLT_MAX_10_EXP | float | 正指数的最大值(以10为底) |

京公网安备 11010502036488号