国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > inttypes.h 以获得更好的体验。

# C 语言标准库头文件 inttypes.h

请查看 C 语言标准库头文件列表 了解更多相关 API。

这个头文件提供 整数格式转换 的相关功能,例如整数和字符串之间的转换。

这个头文件内包含了 stdint.h

# 类型

类型 标准 说明
imaxdiv_t C99 保存除法的结果

# 函数

函数 标准 说明
imaxabs C99 计算整数的绝对值
imaxdiv C99 计算整数除法,返回商和余数
strtoimax C99 字符串转 intmax_t
strtoumax C99 字符串转 uintmax_t
wcstoimax C99 宽字符串转 intmax_t
wcstoumax C99 宽字符串转 uintmax_t

#

printf 格式 标准 说明
PRId8 C99 printf 中用于打印 int8_td 格式(有符号十进制)
PRId16 C99 printf 中用于打印 int16_td 格式
PRId32 C99 printf 中用于打印 int32_td 格式
PRId64 C99 printf 中用于打印 int64_td 格式
PRIdPTR C99 printf 中用于打印 intptr_td 格式
PRIdMAX C99 printf 中用于打印 intmax_td 格式
PRIdFAST8 C99 printf 中用于打印 int_fast8_td 格式
PRIdFAST16 C99 printf 中用于打印 int_fast16_td 格式
PRIdFAST32 C99 printf 中用于打印 int_fast32_td 格式
PRIdFAST64 C99 printf 中用于打印 int_fast64_td 格式
PRIdLEAST8 C99 printf 中用于打印 int_least8_td 格式
PRIdLEAST16 C99 printf 中用于打印 int_least16_td 格式
PRIdLEAST32 C99 printf 中用于打印 int_least32_td 格式
PRIdLEAST64 C99 printf 中用于打印 int_least64_td 格式
PRIi8 C99 printf 中用于打印 int8_ti 格式(有符号十进制)
PRIi16 C99 printf 中用于打印 int16_ti 格式
PRIi32 C99 printf 中用于打印 int32_ti 格式
PRIi64 C99 printf 中用于打印 int64_ti 格式
PRIiPTR C99 printf 中用于打印 intptr_ti 格式
PRIiMAX C99 printf 中用于打印 intmax_ti 格式
PRIiFAST8 C99 printf 中用于打印 int_fast8_ti 格式
PRIiFAST16 C99 printf 中用于打印 int_fast16_ti 格式
PRIiFAST32 C99 printf 中用于打印 int_fast32_ti 格式
PRIiFAST64 C99 printf 中用于打印 int_fast64_ti 格式
PRIiLEAST8 C99 printf 中用于打印 int_least8_ti 格式
PRIiLEAST16 C99 printf 中用于打印 int_least16_ti 格式
PRIiLEAST32 C99 printf 中用于打印 int_least32_ti 格式
PRIiLEAST64 C99 printf 中用于打印 int_least64_ti 格式
PRIu8 C99 printf 中用于打印 uint8_tu 格式(无符号十进制)
PRIu16 C99 printf 中用于打印 uint16_tu 格式
PRIu32 C99 printf 中用于打印 uint32_tu 格式
PRIu64 C99 printf 中用于打印 uint64_tu 格式
PRIuPTR C99 printf 中用于打印 uintptr_tu 格式
PRIuMAX C99 printf 中用于打印 uintmax_tu 格式
PRIuFAST8 C99 printf 中用于打印 uint_fast8_tu 格式
PRIuFAST16 C99 printf 中用于打印 uint_fast16_tu 格式
PRIuFAST32 C99 printf 中用于打印 uint_fast32_tu 格式
PRIuFAST64 C99 printf 中用于打印 uint_fast64_tu 格式
PRIuLEAST8 C99 printf 中用于打印 uint_least8_tu 格式
PRIuLEAST16 C99 printf 中用于打印 uint_least16_tu 格式
PRIuLEAST32 C99 printf 中用于打印 uint_least32_tu 格式
PRIuLEAST64 C99 printf 中用于打印 uint_least64_tu 格式
PRIo8 C99 printf 中用于打印 uint8_to 格式(有符号八进制)
PRIo16 C99 printf 中用于打印 uint16_to 格式
PRIo32 C99 printf 中用于打印 uint32_to 格式
PRIo64 C99 printf 中用于打印 uint64_to 格式
PRIoPTR C99 printf 中用于打印 uintptr_to 格式
PRIoMAX C99 printf 中用于打印 uintmax_to 格式
PRIoFAST8 C99 printf 中用于打印 uint_fast8_to 格式
PRIoFAST16 C99 printf 中用于打印 uint_fast16_to 格式
PRIoFAST32 C99 printf 中用于打印 uint_fast32_to 格式
PRIoFAST64 C99 printf 中用于打印 uint_fast64_to 格式
PRIoLEAST8 C99 printf 中用于打印 uint_least8_to 格式
PRIoLEAST16 C99 printf 中用于打印 uint_least16_to 格式
PRIoLEAST32 C99 printf 中用于打印 uint_least32_to 格式
PRIoLEAST64 C99 printf 中用于打印 uint_least64_to 格式
PRIx8 C99 printf 中用于打印 uint8_tx 格式(有符号十六进制,小写)
PRIx16 C99 printf 中用于打印 uint16_tx 格式
PRIx32 C99 printf 中用于打印 uint32_tx 格式
PRIx64 C99 printf 中用于打印 uint64_tx 格式
PRIxPTR C99 printf 中用于打印 uintptr_tx 格式
PRIxMAX C99 printf 中用于打印 uintmax_tx 格式
PRIxFAST8 C99 printf 中用于打印 uint_fast8_tx 格式
PRIxFAST16 C99 printf 中用于打印 uint_fast16_tx 格式
PRIxFAST32 C99 printf 中用于打印 uint_fast32_tx 格式
PRIxFAST64 C99 printf 中用于打印 uint_fast64_tx 格式
PRIxLEAST8 C99 printf 中用于打印 uint_least8_tx 格式
PRIxLEAST16 C99 printf 中用于打印 uint_least16_tx 格式
PRIxLEAST32 C99 printf 中用于打印 uint_least32_tx 格式
PRIxLEAST64 C99 printf 中用于打印 uint_least64_tx 格式
PRIX8 C99 printf 中用于打印 uint8_tX 格式(有符号十六进制,大写)
PRIX16 C99 printf 中用于打印 uint16_tX 格式
PRIX32 C99 printf 中用于打印 uint32_tX 格式
PRIX64 C99 printf 中用于打印 uint64_tX 格式
PRIXPTR C99 printf 中用于打印 uintptr_tX 格式
PRIXMAX C99 printf 中用于打印 uintmaX_tX 格式
PRIXFAST8 C99 printf 中用于打印 uint_fast8_tX 格式
PRIXFAST16 C99 printf 中用于打印 uint_fast16_tX 格式
PRIXFAST32 C99 printf 中用于打印 uint_fast32_tX 格式
PRIXFAST64 C99 printf 中用于打印 uint_fast64_tX 格式
PRIXLEAST8 C99 printf 中用于打印 uint_least8_tX 格式
PRIXLEAST16 C99 printf 中用于打印 uint_least16_tX 格式
PRIXLEAST32 C99 printf 中用于打印 uint_least32_tX 格式
PRIXLEAST64 C99 printf 中用于打印 uint_least64_tX 格式
scanf 格式 标准 说明
SCNd8 C99 scanf 中用于输入 int8_td 格式(有符号十进制)
SCNd16 C99 scanf 中用于输入 int16_td 格式
SCNd32 C99 scanf 中用于输入 int32_td 格式
SCNd64 C99 scanf 中用于输入 int64_td 格式
SCNdPTR C99 scanf 中用于输入 intptr_td 格式
SCNdMAX C99 scanf 中用于输入 intmax_td 格式
SCNdFAST8 C99 scanf 中用于输入 int_fast8_td 格式
SCNdFAST16 C99 scanf 中用于输入 int_fast16_td 格式
SCNdFAST32 C99 scanf 中用于输入 int_fast32_td 格式
SCNdFAST64 C99 scanf 中用于输入 int_fast64_td 格式
SCNdLEAST8 C99 scanf 中用于输入 int_least8_td 格式
SCNdLEAST16 C99 scanf 中用于输入 int_least16_td 格式
SCNdLEAST32 C99 scanf 中用于输入 int_least32_td 格式
SCNdLEAST64 C99 scanf 中用于输入 int_least64_td 格式
SCNi8 C99 scanf 中用于输入 int8_ti 格式(有符号十进制)
SCNi16 C99 scanf 中用于输入 int16_ti 格式
SCNi32 C99 scanf 中用于输入 int32_ti 格式
SCNi64 C99 scanf 中用于输入 int64_ti 格式
SCNiPTR C99 scanf 中用于输入 intptr_ti 格式
SCNiMAX C99 scanf 中用于输入 intmax_ti 格式
SCNiFAST8 C99 scanf 中用于输入 int_fast8_ti 格式
SCNiFAST16 C99 scanf 中用于输入 int_fast16_ti 格式
SCNiFAST32 C99 scanf 中用于输入 int_fast32_ti 格式
SCNiFAST64 C99 scanf 中用于输入 int_fast64_ti 格式
SCNiLEAST8 C99 scanf 中用于输入 int_least8_ti 格式
SCNiLEAST16 C99 scanf 中用于输入 int_least16_ti 格式
SCNiLEAST32 C99 scanf 中用于输入 int_least32_ti 格式
SCNiLEAST64 C99 scanf 中用于输入 int_least64_ti 格式
SCNu8 C99 scanf 中用于输入 uint8_tu 格式(无符号十进制)
SCNu16 C99 scanf 中用于输入 uint16_tu 格式
SCNu32 C99 scanf 中用于输入 uint32_tu 格式
SCNu64 C99 scanf 中用于输入 uint64_tu 格式
SCNuPTR C99 scanf 中用于输入 uintptr_tu 格式
SCNuMAX C99 scanf 中用于输入 uintmax_tu 格式
SCNuFAST8 C99 scanf 中用于输入 uint_fast8_tu 格式
SCNuFAST16 C99 scanf 中用于输入 uint_fast16_tu 格式
SCNuFAST32 C99 scanf 中用于输入 uint_fast32_tu 格式
SCNuFAST64 C99 scanf 中用于输入 uint_fast64_tu 格式
SCNuLEAST8 C99 scanf 中用于输入 uint_least8_tu 格式
SCNuLEAST16 C99 scanf 中用于输入 uint_least16_tu 格式
SCNuLEAST32 C99 scanf 中用于输入 uint_least32_tu 格式
SCNuLEAST64 C99 scanf 中用于输入 uint_least64_tu 格式
SCNo8 C99 scanf 中用于输入 uint8_to 格式(有符号八进制)
SCNo16 C99 scanf 中用于输入 uint16_to 格式
SCNo32 C99 scanf 中用于输入 uint32_to 格式
SCNo64 C99 scanf 中用于输入 uint64_to 格式
SCNoPTR C99 scanf 中用于输入 uintptr_to 格式
SCNoMAX C99 scanf 中用于输入 uintmax_to 格式
SCNoFAST8 C99 scanf 中用于输入 uint_fast8_to 格式
SCNoFAST16 C99 scanf 中用于输入 uint_fast16_to 格式
SCNoFAST32 C99 scanf 中用于输入 uint_fast32_to 格式
SCNoFAST64 C99 scanf 中用于输入 uint_fast64_to 格式
SCNoLEAST8 C99 scanf 中用于输入 uint_least8_to 格式
SCNoLEAST16 C99 scanf 中用于输入 uint_least16_to 格式
SCNoLEAST32 C99 scanf 中用于输入 uint_least32_to 格式
SCNoLEAST64 C99 scanf 中用于输入 uint_least64_to 格式
SCNx8 C99 scanf 中用于输入 uint8_tx 格式(有符号十六进制,小写)
SCNx16 C99 scanf 中用于输入 uint16_tx 格式
SCNx32 C99 scanf 中用于输入 uint32_tx 格式
SCNx64 C99 scanf 中用于输入 uint64_tx 格式
SCNxPTR C99 scanf 中用于输入 uintptr_tx 格式
SCNxMAX C99 scanf 中用于输入 uintmax_tx 格式
SCNxFAST8 C99 scanf 中用于输入 uint_fast8_tx 格式
SCNxFAST16 C99 scanf 中用于输入 uint_fast16_tx 格式
SCNxFAST32 C99 scanf 中用于输入 uint_fast32_tx 格式
SCNxFAST64 C99 scanf 中用于输入 uint_fast64_tx 格式
SCNxLEAST8 C99 scanf 中用于输入 uint_least8_tx 格式
SCNxLEAST16 C99 scanf 中用于输入 uint_least16_tx 格式
SCNxLEAST32 C99 scanf 中用于输入 uint_least32_tx 格式
SCNxLEAST64 C99 scanf 中用于输入 uint_least64_tx 格式

# 推荐阅读

# 示例

#include <stdio.h>
#include <inttypes.h>  // 提供 strtoimax 和 intmax_t
#include <errno.h>     // 用于错误检查

int main(void) {
    const char *str = "123456789012345";
    char *endptr;
    int base = 10;  // 十进制

    // 重置 errno 以检测错误
    errno = 0;

    // 调用 strtoimax
    intmax_t num = strtoimax(str, &endptr, base);

    // 检查转换是否成功
    if (errno == ERANGE) {
        printf("数值超出 intmax_t 范围!\n");
    } else if (endptr == str) {
        printf("未解析到任何数字!\n");
    } else {
        printf("转换结果: %" PRIdMAX "\n", num);  // PRIdMAX 是 intmax_t 的格式化宏
    }

    return 0;
}

运行结果:

转换结果: 123456789012345
本文 更新于: 2025-11-27 09:38:06 创建于: 2025-11-27 09:38:06