C 语言标准规定了整型数字的最小值和最大值,遵循标准的实现必须让这些值在绝对值上大于或等于标准值,但符号保持不变。举例来说,在 64 位机器上的 Ubuntu 16.04 操作系统上,int 类型对象的最小值是 -2147483648,最大值是 +2147483647,而 C 标准规定的 int 类型对象的最小值和最大值分别是 -32767 和 +32767。
我们以 C11 为例,给出 C 语言标准中对整型数字最小值和最大值的定义。同时,作为对比,也会给出 64 位环境 Ubuntu 16.04 系统(以下简称 U16_x64)实现中定义的实际值。
注:U16_x64 使用的 gcc 版本是 5.4.0,整型数字最小值和最大值的定义位于头文件 /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h。
- 最小对象(字节,非位域)的位数
宏定义 | CHAR_BIT |
C11 | 8 |
U16_x64 | 8 |
- signed char 类型对象的最小值
宏定义 | SCHAR_MIN | |
C11 | -127 | |
U16_x64 | -128 |
- signed char 类型对象的最大值
宏定义 | SCHAR_MAX | |
C11 | +127 | |
U16_x64 | +127 |
- unsigned char 类型对象的最大值
宏定义 | UCHAR_MAX | |
C11 | 255 | |
U16_x64 | 255 |
- char 类型对象的最小值
宏定义 | CHAR_MIN |
C11 | 如果 char 被当做有符号整型,该值等同于 SCHAR_MIN 如果 char 被当做无符号整型,该值等于 0 |
U16_x64 | -128 |
- char 类型对象的最大值
宏定义 | CHAR_MAX |
C11 | 如果 char 被当做有符号整型,该值等同于 SCHAR_MAX 如果 char 被当做无符号整型,该值等同于 UCHAR_MAX |
U16_x64 | 127 |
- 多字节字符中的最大字节数(针对任何地区设置,如果支持的话)
宏定义 | MB_LEN_MAX |
C11 | 1 |
U16_x64 | 16 |
- short int 类型对象的最小值
宏定义 | SHRT_MIN | |
C11 | -32767 | |
U16_x64 | -32768 |
- short int 类型对象的最大值
宏定义 | SHRT_MAX | |
C11 | +32767 | |
U16_x64 | +32767 |
- unsigned short int 类型对象的最大值
宏定义 | USHRT_MAX | |
C11 | 65535 | |
U16_x64 | 65535 |
- int 类型对象的最小值
宏定义 | INT_MIN | |
C11 | -32767 | |
U16_x64 | -2147483648 |
- int 类型对象的最大值
宏定义 | INT_MAX | |
C11 | +32767 | |
U16_x64 | +2147483647 |
- unsigned int 类型对象的最大值
宏定义 | UINT_MAX | |
C11 | 65535 | |
U16_x64 | 4294967295 |
- long int 类型对象的最小值
宏定义 | LONG_MIN | |
C11 | -2147483647 | |
U16_x64 | -9223372036854775808 |
- long int 类型对象的最大值
宏定义 | LONG_MAX | |
C11 | +2147483647 | |
U16_x64 | +9223372036854775807 |
- unsigned long int 类型对象的最大值
宏定义 | ULONG_MAX | |
C11 | 4294967295 | |
U16_x64 | 18446744073709551615 |
- long long int 类型对象的最小值
宏定义 | LLONG_MIN | |
C11 | -9223372036854775807 | |
U16_x64 | -9223372036854775808 |
- long long int 类型对象的最大值
宏定义 | LLONG_MAX | |
C11 | +9223372036854775807 | |
U16_x64 | +9223372036854775807 |
- unsigned long long int 类型对象的最大值
宏定义 | ULLONG_MAX | |
C11 | 18446744073709551615 | |
U16_x64 | 18446744073709551615 |