天天看點

C++ Reference: Standard C++ Library reference: C Library: cstdint

C++官網參考連結:https://cplusplus.com/reference/cstdint/

頭檔案

<cstdint> (stdint.h)

整數類型

該頭檔案定義了一組具有特定寬度要求的整型類型别名,以及指定其限制的宏和建立這些類型值的宏函數。 

類型

以下是基本整型或擴充整型的類型定義。

signed type unsigned type description
intmax_t uintmax_t

Integer type with the maximum width supported.

(支援最大寬度的整數類型。)

int8_t uint8_t

Integer 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.*

(寬度為8、16、32或64位的整數類型。

對于有符号類型,負數用2的補碼表示。

沒有填充位。

可選的:如果不存在具有此類特征的類型,則不定義這些類型。)

int16_t uint16_t
int32_t uint32_t
int64_t uint64_t
int_least8_t uint_least8_t

Integer 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.

(最小值為8、16、32或64位的整數類型。

不存在比它更小且至少具有指定寬度的其他整數類型。)

int_least16_t uint_least16_t
int_least32_t uint_least32_t
int_least64_t uint_least64_t
int_fast8_t uint_fast8_t

Integer 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.

(最小值為8、16、32或64位的整數類型。

至少與至少具有指定寬度的任何其他整數類型一樣快。)

int_fast16_t uint_fast16_t
int_fast32_t uint_fast32_t
int_fast64_t uint_fast64_t
intptr_t uintptr_t Integer 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.*

(能夠儲存從void指針轉換後的值,然後再轉換回類型與原始指針相等的值的整型。

可選的:在某些庫實作中可能沒有定義這些類型定義。*)

其中一些類型定義可能表示相同的類型。是以,函數重載不應該依賴于它們的不同。

*注意,有些類型是可選的(是以,沒有可移植性保證)。一個特定的庫實作還可以用其系統支援的其他寬度定義附加類型。在任何情況下,如果定義了有符号版本或無符号版本,則同時定義有符号版本和無符号版本。

cstdint類型的限制

Macro description defined as
INTMAX_MIN Minimum value of intmax_t -(2^63-1), or lower
INTMAX_MAX Maximum value of intmax_t 2^63-1, or higher
UINTMAX_MAX Maximum value of uintmax_t 2^64-1, or higher
INTN_MIN Minimum value of exact-width signed type Exactly -2^(N-1)
INTN_MAX Maximum value of exact-width signed type Exactly 2^(N-1)-1
UINTN_MAX Maximum value of exact-width unsigned type Exactly 2^N-1
INT_LEASTN_MIN Minimum value of minimum-width signed type -(2^(N-1)-1), or lower
INT_LEASTN_MAX Maximum value of minimum-width signed type 2^(N-1)-1, or higher
UINT_LEASTN_MAX Maximum value of minimum-width unsigned type 2^N-1, or higher
INT_FASTN_MIN Minimum value of fastest minimum-width signed type -(2^(N-1)-1), or lower
INT_FASTN_MAX Maximum value of fastest minimum-width signed type 2^(N-1)-1, or higher
UINT_FASTN_MAX Maximum value of fastest minimum-width unsigned type 2^N-1, or higher
INTPTR_MIN Minimum value of intptr_t -(2^15-1), or lower
INTPTR_MAX Maximum value of intptr_t 2^15-1, or higher
UINTPTR_MAX Maximum value of uintptr_t 2^16-1, or higher

其中N是8、16、32、64或庫支援的任何其他類型寬度。

隻定義與庫支援的類型對應的宏。

其他類型的限制

标準整數類型的限制

Macro description defined as
SIZE_MAX Maximum value of size_t 2^64-1, or higher
PTRDIFF_MIN Minimum value of ptrdiff_t -(2^16-1), or lower
PTRDIFF_MAX Maximum value of ptrdiff_t 2^16-1, or higher
SIG_ATOMIC_MIN Minimum value of sig_atomic_t

if sig_atomic_t is signed: -127, or lower

if sig_atomic_t is unsigned: 0

SIG_ATOMIC_MAX Maximum value of sig_atomic_t

if sig_atomic_t is signed: 127, or higher

if sig_atomic_t is unsigned: 255, or higher

WCHAR_MIN Minimum value of 

wchar_t

if 

wchar_t

 is signed: -127, or lower

if 

wchar_t

 is unsigned: 0
WCHAR_MAX Maximum value of 

wchar_t

if 

wchar_t

 is signed: 127, or higher

if 

wchar_t

 is unsigned: 255, or higher
WINT_MIN Minimum value of wint_t

if wint_t is signed: -32767, or lower

if wint_t is unsigned: 0

WINT_MAX Maximum value of wint_t

if wint_t is signed: 32767, or higher

if wint_t is unsigned: 65535, or higher

類函數宏

這些類函數宏展開為适合初始化上述類型對象的整數常量:

Macro description
INTMAX_C expands to a value of type intmax_t
UINTMAX_C expands to a value of type uintmax_t
INTN_C expands to a value of type int_leastN_t
UINTN_C expands to a value of type uint_leastN_t

例如:

INTMAX_C(2012)  // expands to 2012LL or similar 

繼續閱讀