Fixed width integer types
固定宽度整数类型%28自C++11%29
类型
在标头中定义<cstdint>
*。
INT 8[医]Tint 16[医]Tint 32[医]Tint 64[医]t%28可选%29有符号整数类型,宽度分别为8、16、32和64位,没有填充位,只有在实现直接支持类型%29%28的情况下才提供负值%28的2%27 s补码。
INT[医]快8[医]淡色[医]扣件16[医]淡色[医]扣件32[医]淡色[医]快64[医]宽度至少为8、16、32和64位的最快有符号整数类型,分别为%28
INT[医]最少8[医]淡色[医]至少16[医]淡色[医]至少32[医]淡色[医]至少64[医]最小有符号整数类型,宽度分别为8、16、32和64位,分别为28位、28位和29位。
最大[医]T最大宽度整数类型%28-胡枝子f%29
intptr[医]T%28可选%29整数类型能够保持指针%28
温特8[医]tuint 16[医]tuint 32[医]tuint 64[医]t%28可选的%29无符号整数类型,宽度分别为8、16、32和64位,只有在实现直接支持类型%29%28
温特[医]快8[医]图林[医]扣件16[医]图林[医]扣件32[医]图林[医]快64[医]宽度至少为8、16、32和64位的最快无符号整数类型
温特[医]最少8[医]图林[医]至少16[医]图林[医]至少32[医]图林[医]至少64[医]最小无符号整数类型,宽度分别为8、16、32和64位,分别为28位、28位和29位。
温特马克斯[医]T最大宽度无符号整数类型%28
尤因普特[医]t%28可选%29无符号整数类型,能够保存指针%28
宏常数
在标头中定义<cstdint>
*。
有符号整数:最小值
INT 8[医]MININT 16[医]MININT 32[医]MININT 64[医]int 8类型对象的最小最小值[医]T,int 16[医]T,int 32[医]t,int 64[医]t%28宏常数%29
INT[医]FAST 8[医]MININT[医]FAST 16[医]MININT[医]FAST 32[医]MININT[医]FAST 64[医]int类型对象的最小最小值[医]快8[医]t,int[医]扣件16[医]t,int[医]扣件32[医]t,int[医]快64[医]t%28宏常数%29
INT[医]LEAST 8[医]MININT[医]LEAST 16[医]MININT[医]LEAST 32[医]MININT[医]LEAST 64[医]int类型对象的最小最小值[医]最少8[医]t,int[医]至少16[医]t,int[医]至少32[医]t,int[医]至少64[医]t%28宏常数%29
INTPTR[医]intptr类型对象的最小最小值[医]t%28宏常数%29
INTMAX[医]intmax类型对象的最小最小值[医]t%28宏常数%29
有符号整数:最大值
INT 8[医]MAXINT 16[医]MAXINT 32[医]MAXINT 64[医]int 8类型对象的最大值[医]T,int 16[医]T,int 32[医]t,int 64[医]t%28宏常数%29
INT[医]FAST 8[医]马辛特[医]FAST 16[医]马辛特[医]FAST 32[医]马辛特[医]FAST 64[医]int类型对象的最大值[医]快8[医]t,int[医]扣件16[医]t,int[医]扣件32[医]t,int[医]快64[医]t%28宏常数%29
INT[医]LEAST 8[医]马辛特[医]LEAST 16[医]马辛特[医]LEAST 32[医]马辛特[医]LEAST 64[医]int类型对象的最大值[医]最少8[医]t,int[医]至少16[医]t,int[医]至少32[医]t,int[医]至少64[医]t%28宏常数%29
INTPTR[医]intptr类型对象的最大值[医]t%28宏常数%29
INTMAX[医]intmax类型对象的最大值[医]t%28宏常数%29
无符号整数:最大值
UINT 8[医]MAXUINT 16[医]MAXUINT 32[医]MAXUINT 64[医]uint类型对象的最大值8[医]T,uint 16[医]T,uint 32[医]T,Uint 64[医]t%28宏常数%29
UINT[医]FAST 8[医]马克斯[医]FAST 16[医]马克斯[医]FAST 32[医]马克斯[医]FAST 64[医]uint类型对象的最大值[医]快8[医]T,Uint[医]扣件16[医]T,Uint[医]扣件32[医]T,Uint[医]快64[医]t%28宏常数%29
UINT[医]LEAST 8[医]马克斯[医]LEAST 16[医]马克斯[医]LEAST 32[医]马克斯[医]LEAST 64[医]uint类型对象的最大值[医]最少8[医]T,Uint[医]至少16[医]T,Uint[医]至少32[医]T,Uint[医]至少64[医]t%28宏常数%29
UINTPTR[医]uintptr类型对象的最大值[医]t%28宏常数%29
UINTMAX[医]uintmax类型对象的最大值[医]t%28宏常数%29
函数宏,用于最小宽度整数常量。
INT8_CINT16_CINT32_CINT64_C | expands to an integer constant expression having the value specified by its argument and the type int_least8_t, int_least16_t, int_least32_t, int_least64_t respectively (function macro) |
---|---|
INTMAX_C | expands to an integer constant expression having the value specified by its argument and the type intmax_t (function macro) |
UINT8_CUINT16_CUINT32_CUINT64_C | expands to an integer constant expression having the value specified by its argument and the type uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t respectively (function macro) |
UINTMAX_C | expands to an integer constant expression having the value specified by its argument and the type uintmax_t (function macro) |
二次
#include <cstdint>
UINT64_C(0x123) // expands to a literal of type uint64_t and value 0x123
二次
格式宏常量
在标头中定义<cinttypes>
*。
属性的格式常量。std::fprintf函数族
Equivalentfor int orunsigned int | Description | Macros for data types |
---|---|---|
std::intx_t | std::int_leastx_t | std::int_fastx_t |
x=8、16、32或64
d输出有符号十进制整数值PRIdx PRIdLEASTx PRIdFASTx PRIdMAX PRIdPTR
I PRIix PRLiLEASTx PRIFFASTx PRIFIMAX PRIIPTR
U输出无符号十进制整数值PRIux PRIuLEASTx PRIuFASTx PRIuMAX PRIuPTR
无符号八进制整数值PRIox PRIOLEASTx PRIOFASTx PRIOMAX PRIOPTR的输出
无符号小写十六进制整数值PRIxx PRIxLEASTx PRIxFASTx PRIxMAX PRIxPTR的X输出
无符号大写十六进制整数值PRIXx PRIXLEASTx PRIXFASTx PRIXMAX PRIXPTR的X输出
属性的格式常量。std::fscanf函数族
Equivalentfor int orunsigned int | Description | Macros for data types |
---|---|---|
std::intx_t | std::int_leastx_t | std::int_fastx_t |
x=8、16、32或64
D输入有符号十进制整数值SCNdx SCNdLEASTx SCNdFASTx SCNdMAX SCNDPTR
输入有符号整数值SCNix SCNiLEASTx SCNiFASTx SCNiMAX SCNiPTR
U输入无符号十进制整数值SCNux SCNuLEASTx SCNuFASTx SCNuMAX SCNuPTR
输入无符号八进制整数值SCNox SCNoLEASTx SCNoFASTx SCNoMAX SCNoPTR
输入无符号十六进制整数值SCNxx SCNxLEASTx SCNxFASTx SCNxMAX SCNxPTR
注记
因为C++将紧跟在字符串文本后面的字符解释为用户定义的字符串文字,c代码,如printf("%"PRId64"\n",n是无
效的C++,并且需要一个空格PRId64..
.
C99标准建议C++实现不应定义上述限制、常量或宏格式,除非宏__STDC_LIMIT_MACROS
,,,__STDC_CONSTANT_MACROS
或__STDC_FORMAT_MACROS
%28%29是在包含相关C头之前定义的stdint.h
或inttypes.h
29%。这一建议没有被任何C++标准采纳,而是在C11中被删除。但是,一些实现%28(如glibc 2.17%29)尝试应用此规则,并且可能需要定义__STDC
宏;C++编译器可能试图通过在某些情况下自动定义宏来解决这个问题。
例
二次
#include <cstdio>
#include <cinttypes>
int main()
{
std::printf("%zu\n", sizeof(std::int64_t)
std::printf("%s\n", PRId64
std::printf("%+" PRId64 "\n", INT64_MIN
std::printf("%+" PRId64 "\n", INT64_MAX
std::int64_t n = 7;
std::printf("%+" PRId64 "\n", n
}
二次
可能的产出:
二次
8
lld
-9223372036854775808
+9223372036854775807
+7
二次
另见
- 基本类型
固定宽度整数类型的C文档
*。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。