C的stdio.h中printf()输出函数的格式占位符(格式制定符)的字符宽设置

很多人应该知道stdio.h头文件里面的printf()函数 第一个参数是输出字符串 后面的参数是代替字符串中所出现的占位符的值

我相信下面这个用法肯定大部分人都知道 %.3f输出浮点数的小数部分的三位

printf("%.3f", 0.12345); //输出0.123

但是对于字宽 三某人一直没搞懂 一直以为字符宽设定是限制了可输出的最大字符宽 直到三某人看了K&R 首先看整数

printf("%3d", 12); //输出 12(注意在12前面有一个空格)

这个%3d是输出一个至少占3个字符宽的十进制数 并且输出的值在右侧 而不是左侧 所以空格出现在了左侧

需要注意的是 字符宽的设定并没有限制最大字符宽 例如

printf("%3d", 12345); //输出12345

可以发现如果后面的数值如果超过了3个字符宽 这里的%3d和%d输出就没有区别了 也就是说只是限制了最低字符宽 而不是固定为设定的字符宽

然后是当字符宽限制和浮点数小数位限制一起使用的时候 例如

printf("%6.2f", 12.12345); //输出 12.12

我当初看到这个结果还有点纳闷 为啥是一个空格四个数码 然后扫了一眼中间的小数点

也就是说字符宽的限制是包含了浮点数的小数点的 浮点数的小数部分被严格按照设定被限制了 需要额外注意的就是这个小数点

 

PS.关于占位符这个说法 叫法还真的多 有的地方叫格式指定符 还有叫格式控制符的 我最早看的书称这玩意叫转换指定符(一个译本) 反正叫法不一 这里用了占位符的说法

关于更多占位符怎么使用不在本次讨论范围内 知道最常用的%d十进制 %f浮点数 其他的各位自己查表吧233

PPS.这是一次更新 把其他格式符补充一下

%o表示八进制数
%x表示十六进制数
%c表示字符
%s表示字符串(字符数组 数组最后一个元素是'\0' 也就是0)
%%这玩意是‘%’本身 就是百分号

 

参考资料:K&R C语言程序设计第二版

转载于:https://www.cnblogs.com/alingcat/p/9962967.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值