首先简单介绍一下printf函数,
在msdn这个软件中介绍到,printf的参数是由 部分一:字符串 以及部分2 :若干参数列表组成
以及它的返回i值是 成功输出的字符个数
格式说明符以 % 开头,用于指定后续参数的输出格式。常见的格式说明符包括:(要记得)
-
%d 或 %i:输出有符号十进制整数。
-
%u:输出无符号十进制整数。
-
%o 输出八进制整数。
-
%x 或 %X:输出十六进制整数(小写或大写)。
-
%f:输出浮点数(默认保留 6 位小数)。
-
%c:输出单个字符。
-
%s:输出字符串。
-
%p:输出指针地址。
-
%%:输出 % 字符本身
% [标志] [域宽] [.精度] 类型符
这个很 重要
一、域宽 就是表示占多少个字符的位置
% + 数字 +d 可以分两种情况
1. 数字为正 表示右对齐 如果该数字小于本身的长度就会在左边自动补空格
printf("%5d", 123); 表示出来就是 空格 空格 加 123
2.数字为负就是左对齐 同理在右边加空格
二、精度 %.加数字 浮点类型占位符
表示保留数字位小数
%.6f 等价于 %f 都是保留六位小数,默认就是保留六位
%05d 表示最少输出5位,不够就补0,
printf("%05d",123);输出 00123
三、对字符串也可以
就是%.数字 + s 最多输出 数字个字符
%.5s
四、最后一点就是标志
( + – * 还有#)
想要输出八进制 和 十六进制数而且要带上前缀的话
要在% 和 进制符号之间加上 #比方说
%#o 或者 %#x
就能直接 在八进制前加上 0 在十六进制前加上0x
这里并没有前缀
仔细来看,别眨眼
通过输出对比之后发现,确实加上了前缀
以上都是单独使用的实例,大多情况下都是组合的
比方说
1 右对齐 + 保留2位小数
使用格式说明符 %8.2f:
-
8 表示总域宽为8(包含小数点和小数部分)
-
.2 表示保留2位小数
-
默认右对齐
float num = 123.4567;
printf("%8.2f", num); // 输出:" 123.46"(前面2个空格)
2 左对齐 + 保留1位小数
使用格式说明符 %-宽度.1f,左对齐需加 -:
-
%-7.1f 表示总宽度7,左对齐,保留1位小数
float num = 123.4567;
printf("%-7.1f", num); // 输出:"123.5 "(后面2个空格)
3 补零 + 5位整数
使用格式说明符 %05d:
-
05 表示总宽度5,不足部分补零
-
仅适用于整数(d 类型符)
int num = 12;
printf("%05d", num); // 输出:"00012"
追忆
-
%.f 等价于 %.0f,保留0位小数(直接截断,不四舍五入)。
-
%f 默认保留6位小数,与 %.6f 效果相同。







