定宽整数类型 (C99起)

来自cppreference.com
< c‎ | types

目录

[编辑] 类型

定义于头文件 <stdint.h>
int8_t
int16_t
int32_t
int64_t
各自拥有恰好8、 16、 32和64位宽度的
有符号整数类型,无填充位并使用2补数
(仅在实现直接支持该类型的情况下提供)
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
各自拥有至少8、 16、 32和64位
宽度的最快的有符号整数类型
int_least8_t
int_least16_t
int_least32_t
int_least64_t
各自拥有至少8、 16、 32和64位
宽度的最小的有符号整数类型
intmax_t 最大宽度的有符号整数类型
intptr_t 可以保有指针的有符号整数类型
uint8_t
uint16_t
uint32_t
uint64_t
各自拥有恰好8、 16、 32和64位宽度的无符号整数类型
(仅在实现直接支持该类型的情况下提供)
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
各自拥有至少8、 16、 32和64位
宽度的最快的无符号整数类型
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
各自拥有至少8、 16、 32和64位
宽度的最小的无符号整数类型
uintmax_t 最大宽度的无符号整数类型
uintptr_t 可以保有指针的无符号整数类型

[编辑] 宏常量

定义于头文件 <stdint.h>
有符号整数:最小值
INT8_MIN
INT16_MIN
INT32_MIN
INT64_MIN
int8_tint16_tint32_tint64_t类型对象的最小值
(宏常量)
INT_FAST8_MIN
INT_FAST16_MIN
INT_FAST32_MIN
INT_FAST64_MIN
int_fast8_tint_fast16_tint_fast32_t
int_fast64_t类型对象的最小值
(宏常量)
INT_LEAST8_MIN
INT_LEAST16_MIN
INT_LEAST32_MIN
INT_LEAST64_MIN
int_least8_tint_least16_tint_least32_t
int_least64_t类型对象的最小值
(宏常量)
INTPTR_MIN
intptr_t类型对象的最小值
(宏常量)
INTMAX_MIN
intmax_t类型对象的最小值
(宏常量)
有符号整数:最大值
INT8_MAX
INT16_MAX
INT32_MAX
INT64_MAX
int8_tint16_tint32_tint64_t类型对象的最大值
(宏常量)
INT_FAST8_MAX
INT_FAST16_MAX
INT_FAST32_MAX
INT_FAST64_MAX
int_fast8_tint_fast16_tint_fast32_t
int_fast64_t类型对象的最大值
(宏常量)
INT_LEAST8_MAX
INT_LEAST16_MAX
INT_LEAST32_MAX
INT_LEAST64_MAX
int_least8_tint_least16_tint_least32_t
int_least64_t类型对象的最大值
(宏常量)
INTPTR_MAX
intptr_t类型对象的最大值
(宏常量)
INTMAX_MAX
intmax_t类型对象的最大值
(宏常量)
无符号整数:最大值
UINT8_MAX
UINT16_MAX
UINT32_MAX
UINT64_MAX
uint8_tuint16_tuint32_tuint64_t类型对象的最大值
(宏常量)
UINT_FAST8_MAX
UINT_FAST16_MAX
UINT_FAST32_MAX
UINT_FAST64_MAX
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t类型对象的最大值
(宏常量)
UINT_LEAST8_MAX
UINT_LEAST16_MAX
UINT_LEAST32_MAX
UINT_LEAST64_MAX
uint_least8_tuint_least16_tuint_least32_tuint_least64_t类型对象的最大值
(宏常量)
UINTPTR_MAX
uintptr_t类型对象的最大值
(宏常量)
UINTMAX_MAX
uintmax_t类型对象的最大值
(宏常量)

[编辑] 最小宽度整数常量的函数宏

INT8_C
INT16_C
INT32_C
INT64_C
展开成拥有其参数指定的值,类型各为int_least8_tint_least16_tint_least32_tint_least64_t的整数常量表达式
(宏函数)
INTMAX_C
展开成拥有其参数指定的值,类型为intmax_t的整数常量表达式
(宏函数)
UINT8_C
UINT16_C
UINT32_C
UINT64_C
开成拥有其参数指定的值,类型各为uint_least8_tuint_least16_tuint_least32_tuint_least64_t的整数常量表达式
(宏函数)
UINTMAX_C
展开成拥有其参数指定的值,类型为uintmax_t的整数常量表达式
(宏函数)
#include <stdint.h>
UINT64_C(0x123) // 可以展开成 0x123ULL 或 0x123UL


[编辑] 格式宏常量

定义于头文件 <inttypes.h>

[编辑] fprintf系列函数的格式常量

int
unsigned int
的等价者
描述 数据类型的宏




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
x = 8、 16、 32或 64
d 有符号十进制整数值的输出 PRIdx PRIdLEASTx PRIdFASTx PRIdMAX PRIdPTR
i PRIix PRIiLEASTx PRIiFASTx PRIiMAX PRIiPTR
u 无符号十进制整数值的输出 PRIux PRIuLEASTx PRIuFASTx PRIuMAX PRIuPTR
o 无符号八进制整数值的输出 PRIox PRIoLEASTx PRIoFASTx PRIoMAX PRIoPTR
x 无符号小写十六进制整数值的输出 PRIxx PRIxLEASTx PRIxFASTx PRIxMAX PRIxPTR
X 无符号大写十六进制整数值的输出 PRIXx PRIXLEASTx PRIXFASTx PRIXMAX PRIXPTR

[编辑] fscanf系列函数的格式常量

int
unsigned int
的等价者
描述 数据类型的宏




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
x = 8、 16、 32或 64
d 有符号十进制整数值的输入 SCNdx SCNdLEASTx SCNdFASTx SCNdMAX SCNdPTR
i 有符号整数值的输入(以首个剖析的字符确定基底) SCNix SCNiLEASTx SCNiFASTx SCNiMAX SCNiPTR
u 无符号十进制整数值的输入 SCNux SCNuLEASTx SCNuFASTx SCNuMAX SCNuPTR
o 无符号八进制整数值的输入 SCNox SCNoLEASTx SCNoFASTx SCNoMAX SCNoPTR
x 无符号十六进制值类型的输入 SCNxx SCNxLEASTx SCNxFASTx SCNxMAX SCNxPTR

[编辑] 示例

#include <stdio.h>
#include <inttypes.h>
 
int main(void)
{
    printf("%zu\n", sizeof(int64_t));
    printf("%s\n", PRId64);
    printf("%+"PRId64"\n", INT64_MIN);
    printf("%+"PRId64"\n", INT64_MAX);
 
    int64_t n = 7;
    printf("%+"PRId64"\n", n);
}

可能的输出:

8
lld
-9223372036854775808
+9223372036854775807
+7

[编辑] 参阅

定宽整数类型C++文档