printf 的完整格式:
除转换符外均为可选。
转换符
| 转换符 |
作用 |
示例 |
%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);
|
打印 magic 验证格式:
1 2
| printf("magic: 0x%08x\n", magic);
|
打印准确率(%% 输出百分号):
1 2
| printf("accuracy: %.2f%%\n", acc);
|
注意
格式字符串与参数类型必须匹配。%d 配 float、%f 配 int 是未定义行为,输出不可预测。char 传给 %x 等整数格式时注意符号扩展,见大小端笔记。