# C Programming/limits.h

**limits.h** includes definitions of the characteristics of common variable types. The values are implementation specific, but may not be of lower magnitude than certain specified values in a conforming C implementation.

The C99 standard also specifies the `<stdint.h>`

header file, which provides names and limits for explicitly-sized platform-independent integer datatypes (e.g. `int32_t`

for a 32-bit signed integer).

## Member constants

editThe "minimum-magnitude value" column is the minimum possible magnitude for this constant as specified by the standard. In particular, `_MIN`

values represent the minimum magnitude representable in the rarely-used one's complement and sign-magnitude forms. Most implementations will have larger magnitudes for at least some of these numbers. For instance:

- Two's complement implementations have
`SCHAR_MIN`

equal to −128 (and similarly for all other`_MIN`

values). - 32-bit implementations will set
`INT_MAX`

equal to +2,147,483,647 (and likewise for`INT_MIN`

and`UINT_MAX`

) - Unicode-supporting implementations will set
`MB_LEN_MAX`

to 4 or more. - Many DSPs have
`CHAR_BIT`

equal to 16 or more[1][2].

Name | Description | Typical value | ANSI standard minimum- or maximum magnitude value | |
---|---|---|---|---|

`CHAR_BIT` |
Number of bits in a char | 8 | ≥+8 | |

`SCHAR_MIN` |
Minimum value for a signed char | −128 | ≤−127 | |

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

`UCHAR_MAX` |
Maximum value for an unsigned char | +255 | ≥+255 | |

`CHAR_MIN` |
Minimum value for a char | −128 | ≤−127 (if `char` is represented as a`signed char` ; otherwise ≤0)
| |

`CHAR_MAX` |
Maximum value for a char | +127 | ≥+127 (if `char` is represented as a`signed char` ; otherwise ≥+255)
| |

`MB_LEN_MAX` |
Maximum multi byte length of a character across all locales | varies, usually at least 4 | ≥+1 | |

`SHRT_MIN` |
Minimum value for a short int | −32,768 | ≤−32,767 | |

`SHRT_MAX` |
Maximum value for a short int | +32,767 | ≥+32,767 | |

`USHRT_MAX` |
Maximum value for an unsigned short int | +65,535 | ≥+65,535 | |

`INT_MIN` |
Minimum value for an int | 16 bit compiler |
-32768 or −2,147,483,648 | ≤−32,767 |

32 or 64 bit compiler |
−2,147,483,648 | |||

`INT_MAX` |
Maximum value for an int | 16 bit compiler |
+32,767 or +2,147,483,647 | ≥+32,767 |

32 or 64 bit compiler |
+2,147,483,647 | |||

`UINT_MAX` |
Maximum value for an unsigned int | 16 bit compiler |
+65,535 or +4,294,967,295 | ≥+65,535 |

32 or 64 bit compiler |
+4,294,967,295 | |||

`LONG_MIN` |
Minimum value for a long int | 16 or 32 bit compiler |
−2,147,483,648 | ≤−2,147,483,647 |

64 bit compiler |
−2,147,483,648 or −9,223,372,036,854,775,808 | |||

`LONG_MAX` |
Maximum value for a long int | 16 or 32 bit compiler |
+2,147,483,647 | ≥+2,147,483,647 |

64 bit compiler |
+2,147,483,647 or +9,223,372,036,854,775,807 | |||

`ULONG_MAX` |
Maximum value for an unsigned long int | 16 or 32 bit compiler |
+4,294,967,295 | ≥+4,294,967,295 |

64 bit compiler |
+4,294,967,295 or +18,446,744,073,709,551,615 | |||

`LLONG_MIN` |
Minimum value for a long long int | −9,223,372,036,854,775,808 | ≤−9,223,372,036,854,775,807 | |

`LLONG_MAX` |
Maximum value for a long long int | +9,223,372,036,854,775,807 | ≥+9,223,372,036,854,775,807 | |

`ULLONG_MAX` |
Maximum value for an unsigned long long int | +18,446,744,073,709,551,615 | ≥+18,446,744,073,709,551,615 |

## References

edit- C Guide--2.5 limits.h, accessed on September 2006.