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 edit

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[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

External links edit