You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

打印uint_fast系列及对应有符号快速整数类型的可移植正确方法是什么

快速整数类型的可移植打印方法

正确的可移植打印方式是使用C标准库<inttypes.h>头文件中提供的专用格式转换宏,无需手动判断类型长度,就能跨平台适配不同架构下uint_fast*_t、int_fast*_t的实际宽度,兼容C99及以上所有符合标准的编译环境。

无符号快速类型对应打印宏

  • uint_fast8_t 对应十进制打印宏:PRIuFAST8,调用示例:printf("%" PRIuFAST8 "\n", val);
  • uint_fast16_t 对应十进制打印宏:PRIuFAST16
  • uint_fast32_t 对应十进制打印宏:PRIuFAST32
  • uint_fast64_t 对应十进制打印宏:PRIuFAST64

如果需要打印八进制、十六进制格式,只需把宏中代表无符号十进制的u替换为对应格式符即可:

  • 八进制替换为o,比如PRIoFAST8对应uint_fast8_t的八进制打印
  • 小写十六进制替换为x,大写十六进制替换为X,比如PRIXFAST32对应uint_fast32_t的大写十六进制打印

有符号快速类型对应打印宏

和无符号类型规则一致,有符号int_fast*_t系列的格式宏以PRId/PRIi开头:

  • int_fast8_t 对应十进制打印宏:PRIdFAST8
  • int_fast16_t 对应十进制打印宏:PRIdFAST16
  • int_fast32_t 对应十进制打印宏:PRIdFAST32
  • int_fast64_t 对应十进制打印宏:PRIdFAST64

完整使用示例

#include <stdio.h>
#include <inttypes.h>

int main(void) {
    uint_fast16_t u_test = 65530U;
    int_fast64_t s_test = -9876543210LL;

    // 打印无符号快速类型
    printf("uint_fast16_t 十进制值:%" PRIuFAST16 "\n", u_test);
    printf("uint_fast16_t 十六进制值:0x%" PRIxFAST16 "\n", u_test);

    // 打印有符号快速类型
    printf("int_fast64_t 十进制值:%" PRIdFAST64 "\n", s_test);
    return 0;
}

内容的提问来源于stack exchange,提问作者Aval Sarri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:27:03