46 lines
1.6 KiB
Markdown
46 lines
1.6 KiB
Markdown
# limits.h
|
||
|
||
`limits.h`提供了用来定义各种整数类型(包括字符类型)取值范围的宏。
|
||
|
||
- `CHAR_BIT`:每个字符包含的二进制位数。
|
||
- `SCHAR_MIN`:signed char 类型的最小值。
|
||
- `SCHAR_MAX`:signed char 类型的最大值。
|
||
- `UCHAR_MAX`:unsiged char 类型的最大值。
|
||
- `CHAR_MIN`:char 类型的最小值。
|
||
- `CHAR_MAX`:char 类型的最大值。
|
||
- `MB_LEN_MAX`:多字节字符最多包含的字节数。
|
||
- `SHRT_MIN`:short int 类型的最小值。
|
||
- `SHRT_MAX`:short int 类型的最大值。
|
||
- `USHRT_MAX`:unsigned short int 类型的最大值。
|
||
- `INT_MIN`:int 类型的最小值。
|
||
- `INT_MAX`:int 类型的最大值。
|
||
- `UINT_MAX`:unsigned int 类型的最大值。
|
||
- `LONG_MIN`:long int 类型的最小值。
|
||
- `LONG_MAX`:long int 类型的最大值。
|
||
- `ULONG_MAX`:unsigned long int 类型的最大值。
|
||
- `LLONG_MIN`:long long int 类型的最小值。
|
||
- `LLONG_MAX`:long long int 类型的最大值。
|
||
- `ULLONG_MAX`:unsigned long long int 类型的最大值。
|
||
|
||
下面的示例是使用预处理指令判断,int 类型是否可以用来存储大于 100000 的数。
|
||
|
||
```c
|
||
#if INT_MAX < 100000
|
||
#error int type is too small
|
||
#endif
|
||
```
|
||
|
||
上面示例中,如果 int 类型太小,预处理器会显示一条出错消息。
|
||
|
||
可以使用`limit.h`里面的宏,为类型别名选择正确的底层类型。
|
||
|
||
```c
|
||
#if INT_MAX >= 100000
|
||
typedef int Quantity;
|
||
#else
|
||
typedef long int Quantity;
|
||
#endif
|
||
```
|
||
|
||
上面示例中,如果整数类型的最大值(`INT_MAX`)不小于100000,那么类型别名`Quantity`指向`int`,否则就指向`long int`。
|