头文件

<cstdint> (stdint.h)

整数类型
此头文件定义了一组具有特定宽度要求的整型类型别名,以及指定其限制的宏和创建这些类型值的宏函数。

类型

以下是基本整数类型扩展整数类型的 typedef。

有符号类型无符号类型描述
intmax_tuintmax_t支持的最大宽度的整数类型。
int8_tuint8_t宽度恰好为 8、16、32 或 64 位的整数类型。
对于有符号类型,负值使用 2 的补码表示。
无填充位。
可选:如果不存在具有此类特性的类型,则不定义这些 typedef。*
int16_tuint16_t
int32_tuint32_t
int64_tuint64_t
int_least8_tuint_least8_t宽度至少为 8、16、32 或 64 位的整数类型。
不存在其他尺寸更小且至少具有指定宽度的整数类型。
int_least16_tuint_least16_t
int_least32_tuint_least32_t
int_least64_tuint_least64_t
int_fast8_tuint_fast8_t宽度至少为 8、16、32 或 64 位的整数类型。
至少与任何其他具有至少指定宽度的整数类型一样快。
int_fast16_tuint_fast16_t
int_fast32_tuint_fast32_t
int_fast64_tuint_fast64_t
intptr_tuintptr_t能够保存从 void 指针转换而来的值,然后再转换回该类型,其值与原始指针相等的整数类型。
可选:在某些库实现中可能未定义这些 typedef。*

其中一些 typedef 可能表示相同的类型。因此,函数重载不应依赖于它们的差异。

* 请注意,某些类型是可选的(因此,没有可移植性保证)。特定的库实现也可能定义其系统支持的其他宽度的附加类型。在任何情况下,如果定义了有符号或无符号版本中的任何一个,则有符号和无符号版本都将被定义。


cstdint 类型的限制

描述定义为
INTMAX_MINintmax_t 的最小值-(263-1) 或更小
INTMAX_MAXintmax_t 的最大值263-1 或更大
UINTMAX_MAXuintmax_t 的最大值264-1 或更大
INTN_MIN固定宽度有符号类型的最小值恰好是 -2(N-1)
INTN_MAX固定宽度有符号类型的最大值恰好是 2(N-1)-1
UINTN_MAX固定宽度无符号类型的最大值恰好是 2N-1
INT_LEASTN_MIN最小宽度有符号类型的最小值-(2(N-1)-1) 或更小
INT_LEASTN_MAX最小宽度有符号类型的最大值2(N-1)-1 或更大
UINT_LEASTN_MAX最小宽度无符号类型的最大值2N-1 或更大
INT_FASTN_MIN最快最小宽度有符号类型的最小值-(2(N-1)-1) 或更小
INT_FASTN_MAX最快最小宽度有符号类型的最大值2(N-1)-1 或更大
UINT_FASTN_MAX最快最小宽度无符号类型的最大值2N-1 或更大
INTPTR_MINintptr_t 的最小值-(215-1) 或更小
INTPTR_MAXintptr_t 的最大值215-1 或更大
UINTPTR_MAXuintptr_t 的最大值216-1 或更大
其中 N 是 8、16、32、64 或库支持的任何其他类型宽度之一。

仅定义与库支持的类型相对应的宏。

其他类型的限制

其他标准整数类型的限制
描述定义为
SIZE_MAXsize_t 的最大值264-1 或更大
PTRDIFF_MINptrdiff_t 的最小值-(216-1) 或更小
PTRDIFF_MAXptrdiff_t 的最大值216-1 或更大
SIG_ATOMIC_MINsig_atomic_t 的最小值如果 sig_atomic_t 是有符号的:-127 或更小
如果 sig_atomic_t 是无符号的:0
SIG_ATOMIC_MAXsig_atomic_t 的最大值如果 sig_atomic_t 是有符号的:127 或更大
如果 sig_atomic_t 是无符号的:255 或更大
WCHAR_MINwchar_t 的最小值如果 wchar_t 是有符号的:-127 或更小
如果 wchar_t 是无符号的:0
WCHAR_MAXwchar_t 的最大值如果 wchar_t 是有符号的:127 或更大
如果 wchar_t 是无符号的:255 或更大
WINT_MINwint_t 的最小值如果 wint_t 是有符号的:-32767 或更小
如果 wint_t 是无符号的:0
WINT_MAXwint_t 的最大值如果 wint_t 是有符号的:32767 或更大
如果 wint_t 是无符号的:65535 或更大

类函数宏

这些类函数宏展开为适合初始化上述类型对象的整型常量
描述
INTMAX_C展开为 intmax_t 类型的值
UINTMAX_C展开为 uintmax_t 类型的值
INTN_C展开为 int_leastN_t 类型的值
UINTN_C展开为 uint_leastN_t 类型的值

例如:
1
INTMAX_C(2012)  // expands to 2012LL or similar