printf 格式占位符速查

Guo Xiaosheng Lv1

printf 的完整格式:

1
%[标志][最小宽度][.精度][长度]转换符

除转换符外均为可选。

转换符

转换符 作用 示例
%d / %i 有符号整数 printf("%d", -5) → -5
%u 无符号整数 printf("%u", -1) → 4294967295(按补码解释)
%x / %X 十六进制(小/大写) printf("%x", 255) → ff;printf("%X", 255) → FF
%o 八进制 printf("%o", 8) → 10
%f 浮点数,默认 6 位小数 printf("%f", 1.5) → 1.500000
%e / %E 科学计数法 printf("%e", 12345.678) → 1.234568e+04
%g 自动选 %f 或 %e 较短者 printf("%g", 12345.678) → 12345.7;printf("%g", 0.000012345) → 1.2345e-05
%c 单个字符 printf("%c", 'A') → A
%s 字符串 printf("%s", "hello") → hello
%p 指针地址 printf("%p", &x) → 0x...(运行时地址,平台相关)
%% 输出 % 字符本身 printf("100%%") → 100%

长度修饰符

写法 对应类型 示例
%ld long printf("%ld", 123456789L) → 123456789
%lld long long printf("%lld", 10000000000LL) → 10000000000
%zu size_t printf("%zu", sizeof(int)) → 4
%hhd char 按 8 位整数打印 printf("%hhd", 65) → 65

宽度与精度

  • %5d:最小宽度 5,右对齐,不足补空格
  • %.2f:小数点后 2 位
  • %.0f:不含小数
  • %.2s:字符串最多取前 2 个字符

标志

标志 作用 示例
- 左对齐(默认右对齐) %-5d
0 用 0 补宽度 %05d → 00042
+ 正数显示 + %+d → +42
空格 正数显示空格占位 % d → 42
# 特殊前缀 %#x → 0xff

项目中的用法

打印样本数:

1
2
printf("train samples: %d\n", set.n);
// 输出:train samples: 60000

打印 magic 验证格式:

1
2
printf("magic: 0x%08x\n", magic);
// 输出:magic: 0x00000803

打印准确率(%% 输出百分号):

1
2
printf("accuracy: %.2f%%\n", acc);
// 输出:accuracy: 92.35%(示例值,取决于训练结果)

注意

格式字符串与参数类型必须匹配。%d 配 float、%f 配 int 是未定义行为,输出不可预测。char 传给 %x 等整数格式时注意符号扩展,见大小端笔记。

  • 标题: printf 格式占位符速查
  • 作者: Guo Xiaosheng
  • 创建于 : 2026-08-03 21:20:00
  • 更新于 : 2026-08-03 23:56:17
  • 链接: https://serendipityb612.com/2026/08/03/2026-08-03-printf-format-guide/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。