printf函数的声明如下:intprintf(constchar*format,...)printf()的格式控制字符串组成如下:%[flags][width][.precision][length]specifier%[flags][min-width][.precision][length]specifier,其中[]表示可选。1.旗帜(flags)1.1。-在给定的字段宽度内左对齐,默认为右对齐。如下图,当输出宽度为10个字符时,默认为右对齐,如果在输出中加上-标志,则按照左对齐输出。1.2、+强制在结果前显示一个加号或减号(+或-),即在正数前面会显示一个+号。默认情况下,只有负数前面带有-号。如下图,当只使用%d输出8时,如果8前面不加正号,则只输出8。但是如果在输出中加了+号,则会加一个正号在结果显示之前。1.3、(空格)如果没有写符号,则在数值前插入一个空格。另请参阅上面的示例,当输出为%d时。8.1.4前面有空位。当#与o、x或X说明符一起使用时,0、0x或0X将分别显示在非零值的前面。与e、E和f一起使用时,强制输出包含小数点,即使小数点后没有数字。默认情况下,如果后面没有数字,则不显示小数点。当与g或G一起使用时,结果与与e或E一起使用时相同,但不会删除尾随零。如下图,第一个是输出十进制的8,第二个是输出八进制的10,转换成二进制数001000,刚好对应十进制的8,第三个是输出八进制的10十六进制,但在十进制中十六进制标志是0x,第四个是八进制输出。在输出结果前加上八进制标志0。0开头的数字是八进制。比如定义一个变量inta=010;十进制输出a为8.1.5,0在指定填充的数字左侧放置零(0)而不是空格,这与宽度参数一起使用。如下图所示,3是可选宽度的参数,代表三种宽度。如果前面加0,则表示前面用0填充,而不是用空格。二、width(宽度)2.1、(number)要输出的最小字符数。如果输出值小于此数字,则结果用空格填充。如果输出值比这个数字长,结果将不会被截断。2.2.*宽度没有在格式字符串中指定,但会放在要格式化的参数之前,作为一个额外的整数值参数。如下图所示,如果想输出和上图一样的,可以将width作为参数传入,实现同样的输出。三、精度(precision)与宽度相同。四、长度(length)这里我们只需要知道hh占一个字节,h占两个字节,l占四个字节,ll占八个字节。如下图,十六进制输出~0。5.说明符(Specifier)说明符是必填项,比较常用。说两个不常用的,如下图,如果需要打印%符号,只需要%%;如果需要输出引号,需要加上转义符\。所有测试如下,略有改动。如何快速记住格式,只记住第一个字母,FWPLS,多记几次就记住了。等一下,我突然想到了一个很好的记忆方法,在这个字母上加一个U字母,就是U(你),FWPLUS,最后四个字母加就是加的意思,FWLenovo,首先想到的是FW(废物),巧合的是,搜狗也是。连在一起就是废+,再加一个U。噗哈哈……
