C Programming/limits.h

From Wikibooks, open books for an open world
Jump to navigation Jump to search

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 | edit source]

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 | edit source]

External links[edit | edit source]