# 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

The "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.
| Name | Description | Typical value | Typical value | ANSI standard minimum- or maximum magnitude value |
| CHAR_BIT | Number of bits in a char | 8 | 8 | ≥+8 |
| SCHAR_MIN | Minimum value for a signed char | −128 | −128 | ≤−127 |
| SCHAR_MAX | Maximum value for a signed char | +127 | +127 | ≥+127 |
| UCHAR_MAX | Maximum value for an unsigned char | +255 | +255 | ≥+255 |
| CHAR_MIN | Minimum value for a char | −128 | −128 | ≤−127 (if char is represented as a signed char; otherwise ≤0) |
| CHAR_MAX | Maximum value for a char | +127 | +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 | varies, usually at least 4 | ≥+1 |
| SHRT_MIN | Minimum value for a short int | −32,768 | −32,768 | ≤−32,767 |
| SHRT_MAX | Maximum value for a short int | +32,767 | +32,767 | ≥+32,767 |
| USHRT_MAX | Maximum value for an unsigned short int | +65,535 | +65,535 | ≥+65,535 |
| INT_MIN | Minimum value for an int | 16 bit compiler | -32768 or −2,147,483,648 | ≤−32,767 |
| INT_MIN | Minimum value for an int | 32 or 64 bit compiler | −2,147,483,648 | ≤−32,767 |
| INT_MAX | Maximum value for an int | 16 bit compiler | +32,767 or +2,147,483,647 | ≥+32,767 |
| INT_MAX | Maximum value for an int | 32 or 64 bit compiler | +2,147,483,647 | ≥+32,767 |
| UINT_MAX | Maximum value for an unsigned int | 16 bit compiler | +65,535 or +4,294,967,295 | ≥+65,535 |
| UINT_MAX | Maximum value for an unsigned int | 32 or 64 bit compiler | +4,294,967,295 | ≥+65,535 |
| LONG_MIN | Minimum value for a long int | 16 or 32 bit compiler | −2,147,483,648 | ≤−2,147,483,647 |
| LONG_MIN | Minimum value for a long int | 64 bit compiler | −2,147,483,648 or −9,223,372,036,854,775,808 | ≤−2,147,483,647 |
| LONG_MAX | Maximum value for a long int | 16 or 32 bit compiler | +2,147,483,647 | ≥+2,147,483,647 |
| LONG_MAX | Maximum value for a long int | 64 bit compiler | +2,147,483,647 or +9,223,372,036,854,775,807 | ≥+2,147,483,647 |
| ULONG_MAX | Maximum value for an unsigned long int | 16 or 32 bit compiler | +4,294,967,295 | ≥+4,294,967,295 |
| ULONG_MAX | Maximum value for an unsigned long int | 64 bit compiler | +4,294,967,295 or +18,446,744,073,709,551,615 | ≥+4,294,967,295 |
| LLONG_MIN | Minimum value for a long long int | −9,223,372,036,854,775,808 | −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 | ≥+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 | ≥+18,446,744,073,709,551,615 |

## References

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

## External links

* C++ reference for implementation defined numeric constants inherited from C