header

<cstdint> (stdint.h)

Integer types
This header defines a set of integral type aliases with specific width requirements, along with macros specifying their limits and macro functions to create values of these types.

Types

The following are typedefs of fundamental integral types or extended integral types.

signed typeunsigned typedescription
intmax_tuintmax_tInteger type with the maximum width supported.
int8_tuint8_tInteger type with a width of exactly 8, 16, 32, or 64 bits.
For signed types, negative values are represented using 2's complement.
No padding bits.
Optional: These typedefs are not defined if no types with such characteristics exist.*
int16_tuint16_t
int32_tuint32_t
int64_tuint64_t
int_least8_tuint_least8_tInteger type with a minimum of 8, 16, 32, or 64 bits.
No other integer type exists with lesser size and at least the specified width.
int_least16_tuint_least16_t
int_least32_tuint_least32_t
int_least64_tuint_least64_t
int_fast8_tuint_fast8_tInteger type with a minimum of 8, 16, 32, or 64 bits.
At least as fast as any other integer type with at least the specified width.
int_fast16_tuint_fast16_t
int_fast32_tuint_fast32_t
int_fast64_tuint_fast64_t
intptr_tuintptr_tInteger type capable of holding a value converted from a void pointer and then be converted back to that type with a value that compares equal to the original pointer.
Optional: These typedefs may not be defined in some library implementations.*

Some of these typedefs may denote the same types. Therefore, function overloads should not rely on these being different.

* Notice that some types are optional (and thus, with no portability guarantees). A particular library implementation may also define additional types with other widths supported by its system. In any case, if either the signed or the unsigned version is defined, both the signed and unsigned versions are defined.

Macros


Limits of cstdint types

Macrodescriptiondefined as
INTMAX_MINMinimum value of intmax_t-(263-1), or lower
INTMAX_MAXMaximum value of intmax_t263-1, or higher
UINTMAX_MAXMaximum value of uintmax_t264-1, or higher
INTN_MINMinimum value of exact-width signed typeExactly -2(N-1)
INTN_MAXMaximum value of exact-width signed typeExactly 2(N-1)-1
UINTN_MAXMaximum value of exact-width unsigned typeExactly 2N-1
INT_LEASTN_MINMinimum value of minimum-width signed type-(2(N-1)-1), or lower
INT_LEASTN_MAXMaximum value of minimum-width signed type2(N-1)-1, or higher
UINT_LEASTN_MAXMaximum value of minimum-width unsigned type2N-1, or higher
INT_FASTN_MINMinimum value of fastest minimum-width signed type-(2(N-1)-1), or lower
INT_FASTN_MAXMaximum value of fastest minimum-width signed type2(N-1)-1, or higher
UINT_FASTN_MAXMaximum value of fastest minimum-width unsigned type2N-1, or higher
INTPTR_MINMinimum value of intptr_t-(215-1), or lower
INTPTR_MAXMaximum value of intptr_t215-1, or higher
UINTPTR_MAXMaximum value of uintptr_t216-1, or higher
Where N is one in 8, 16, 32, 64, or any other type width supported by the library.

Only the macros corresponding to types supported by the library are defined.

Limits of other types

Limits of other standard integral types:
Macrodescriptiondefined as
SIZE_MAXMaximum value of size_t264-1, or higher
PTRDIFF_MINMinimum value of ptrdiff_t-(216-1), or lower
PTRDIFF_MAXMaximum value of ptrdiff_t216-1, or higher
SIG_ATOMIC_MINMinimum value of sig_atomic_tif sig_atomic_t is signed: -127, or lower
if sig_atomic_t is unsigned: 0
SIG_ATOMIC_MAXMaximum value of sig_atomic_tif sig_atomic_t is signed: 127, or higher
if sig_atomic_t is unsigned: 255, or higher
WCHAR_MINMinimum value of wchar_tif wchar_t is signed: -127, or lower
if wchar_t is unsigned: 0
WCHAR_MAXMaximum value of wchar_tif wchar_t is signed: 127, or higher
if wchar_t is unsigned: 255, or higher
WINT_MINMinimum value of wint_tif wint_t is signed: -32767, or lower
if wint_t is unsigned: 0
WINT_MAXMaximum value of wint_tif wint_t is signed: 32767, or higher
if wint_t is unsigned: 65535, or higher

Function-like macros

These function-like macros expand to integer constants suitable to initialize objects of the types above:
Macrodescription
INTMAX_Cexpands to a value of type intmax_t
UINTMAX_Cexpands to a value of type uintmax_t
INTN_Cexpands to a value of type int_leastN_t
UINTN_Cexpands to a value of type uint_leastN_t

For example:
1
INTMAX_C(2012)  // expands to 2012LL or similar