printf 格式占位符速查

Guo Xiaosheng Lv1

printf 的完整格式:

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

除转换符外均为可选。

转换符

转换符 作用 示例
%d / %i 有符号整数 printf("%d", -5)-5
%u 无符号整数 printf("%u", -1)4294967295(按补码解释)
%x / %X 十六进制(小/大写) printf("%x", 255)ffprintf("%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.7printf("%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 补宽度 %05d00042
+ 正数显示 + %+d+42
空格 正数显示空格占位 % d 42
# 特殊前缀 %#x0xff

项目中的用法

打印样本数:

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%(示例值,取决于训练结果)

注意

格式字符串与参数类型必须匹配。%dfloat%fint 是未定义行为,输出不可预测。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 进行许可。