山谈c中printf格式修饰符
废话不多说,简单粗暴地上图。
(一)初始定义

(二)运行结果

(三)规律总结
对于如下:
printf("%7.4d",12);
printf("%4.7f",123.456);
printf("%12.7s","hello");
等输出语句,
归纳成形如printf("%a.bc",d)格式的输出语句,其中d为int/float/char[]等类型变量,c为d/f/s等格式符,a为前修饰符,b为后修饰符。
规律如下:
1.前修饰符的绝对值表示输出宽度限制;
2.后修饰符表示输出精度限制;
3.首先考虑后修饰符,然后再考虑前修饰符;
4.int型变量要求输出数字位数不低于精度限制,如果低于则用0在数字前补齐;
5.float型变量要求输出小数点后保留位数等于精度限制,多余部分被剪切掉;
6.char[]型变量要求输出字符串长度不高于精度限制,如果高于则将字符串后面多余的剪切掉;
7.对于上三者变量都要求输出宽度不低于宽度限制,如果低于,则用空格补齐;
8.前修饰符可正可负,后修饰符必须为正。
8.前修饰符如果为正数,则补齐宽度的空格在左,如果为负数,则补齐宽度的空格在右;
9.额外记忆:如果char[]型变量前修饰符以0开头,则补齐宽度不是用空格,而是用0。
(四)举例记忆
【例1】printf("%10.7s","12345678");
首先考虑后修饰符-精度限制为7;要求输出字符串长度不高于精度限制,如果高于则将字符串后面多余的剪切掉,"12345678"长度为8,多出一个,则将后面的“8”剪切掉,得到“1234567”;
然后考虑前修饰符-输出宽度限制为10;此时要求输出宽度不低于宽度限制,如果低于,则用空格补齐,现在长度为7需要补充3个空格达到宽度10;
因为前修饰符为正数,所以补齐宽度的空格在左,即输出格式应为“###1234567”//为便于理解,空格符我用#符号代替。
【例2】printf("%-7.4d",123456);
首先考虑后修饰符-精度限制为4;要求输出数字位数不低于精度限制,此时位数为6不低于4,满足条件;
然后考虑前修饰符-输出宽度限制为7;此时要求输出宽度不低于宽度限制,如果低于,则用空格补齐,现在长度为6需要补充1个空格达到宽度7;
因为前修饰符为负数,所以补齐宽度的空格在右,即输出格式应为“1234566#”//为便于理解,空格符我用#符号代替。
附图:验证分析正确

山谈c中printf格式修饰符的更多相关文章
- SAS学习笔记33 格式修饰符
冒号(:)格式修饰符 从非空格开始读取变量所对应的数据,直到满足以下任何一种情况 遇到下一个空格列 对应变量所定义的长度已经读满 数据行结束 &格式修饰符 修饰所读取为字符型的列数据中含有一个 ...
- [.net 面向对象编程基础] (8) 基础中的基础——修饰符
[.net 面向对象编程基础] (8) 基础中的基础——修饰符 在进入C#面向对象核心之前,我们需要先对修饰符有所了解,其实我们在前面说到变量和常量的时候,已经使用了修饰符,并且说明了变量和常量的修改 ...
- php中的访问修饰符 private、protected、public的作用范围
1. private 只能在类内部使用 2. protected 可以在类内部和继承类里使用.类外部不能使用[即实例化后的对象无法调用] 3. public 全部范围适用. 4.子类复写父类中的方法时 ...
- java中的类修饰符、成员变量修饰符、方法修饰符。
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...
- 详解Java中的访问控制修饰符(public, protected, default, private)
Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获 ...
- C# 中的sealed修饰符学习
转载原地址 http://developer.51cto.com/art/200908/147327.htm C#语言还是比较常见的东西,这里我们主要介绍C# sealed修饰符,包括介绍两个修饰符在 ...
- OC基础教程 C语言中的格式占位符:
C语言中的格式占位符: %a,%A 读入一个浮点值(仅C99有效) %c 读入一个字符 %d 读入十进制整数 %i 读入十进制,八进制,十六进制整数 %o 读入八进制整数 %x,%X 读入十六进制整数 ...
- Java学习笔记十九:Java中的访问控制修饰符
Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...
- 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)
1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...
随机推荐
- MongoDB学习总结(五) —— 安全认证
作为数据库软件,我们要确保数据的安全,不是谁都可以访问的,所以mongodb也像其他的数据库软件一样可以采用用户验证的方法, mongodb 3.0之前的版本提供了addUser方法向不同的数据库添加 ...
- xml类型转换列表显示 SQL查询
数据库中存在字段类型为xml 的数据, 现举例 xml 字段存储的数据为: <MortgageInfoShipList> <ITEMS> <ITEM> <Sh ...
- css特殊字符编码
- 配置NFS服务与tftp服务
在VMware在安装ubuntu的图解 链接:http://pan.baidu.com/s/1jIofvYu 密码:da72 图解里已经解压安装了VMware Tools,接下来必须要安装的就是NFS ...
- Win32/MFC/COM学习推荐书籍
以前有不少朋友问关于学习各种技术的推荐书籍的问题,这里把我觉得比较好的一些书籍列一下,希望能起到抛砖引玉的作用就好了:) Win32开发 Programming Windows by Charles ...
- Java Web(九) 用户管理系统
前面学习了一大堆,什么JSP,Servlet.jstl.el等等等,大多是一些死的东西,只要会其语法,知道怎么用就行了,所以做了一个小小的只有增删改查的小demo,为的就是熟悉这些知识.灵活运用起来. ...
- 详解JavaScript闭包
要想完全明白JavaScript的闭包,要先明白js中的一些基础原理,然后我再给出一些例子来讲解闭包. 在执行JavaScript时会创建一个执行环境(excution context),执行环境定义 ...
- EFcore与动态模型(三)
紧接着上面的内容,我们继续看下动态模型页面交互实现方式,内容如下: 1,如何实现动态表单 2,如何接收表单数据并绑定到动态模型上 一.如何实现动态表单 由于模型信息都是后台自定义配置的,并不是固定不变 ...
- PHP中include()与require()的区别
require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require ...
- 算法笔记_066:Kruskal算法详解(Java)
目录 1 问题描述 2 解决方案 2.1 构造最小生成树示例 2.2 伪码及时间效率分析 2.3 具体编码(最佳时间效率) 1 问题描述 何为Kruskal算法? 该算法功能:求取加权连通图的最小 ...