The limits header defines the characteristics of variable types.

The following values are defined with the `#define`

directive.
These values are implementation-specific, but may not be any lower than what
is given here.

`CHAR_BIT 8` |
Number of bits in a byte. |

`SCHAR_MIN -127` |
Minimum value for a signed char. |

`SCHAR_MAX +127` |
Maximum value for a signed char. |

`UCHAR_MAX 255` |
Maximum value for an unsigned char. |

`CHAR_MIN` |
These define the minimum and maximum values for a char. If a char is
being represented as a signed integer, then their values are the same as
the signed char (`SCHAR` ) values. Otherwise
`CHAR_MIN` is 0 and `CHAR_MAX` is the same as
`UCHAR_MAX` . |

`MB_LEN_MAX 1` |
Maximum number of bytes in a multibyte character. |

`SHRT_MIN -32767` |
Minimum value for a short int. |

`SHRT_MAX +32767` |
Maximum value for a short int. |

`USHRT_MAX 65535` |
Maximum value for an unsigned short int. |

`INT_MIN -32767` |
Minimum value for an int. |

`INT_MAX +32767` |
Maximum value for an int. |

`UINT_MAX 65535` |
Maximum value for an unsigned int. |

`LONG_MIN -2147483647` |
Minimum value for a long int. |

`LONG_MAX +2147483647` |
Maximum value for a long int. |

`ULONG_MAX 4294967295` |
Maximum value for an unsigned long int. |