原:printf格式化字符串说明
创建:2012.04.11
[自:NSString的格式说明比这个要多不少。 但是printf是基础,它们都遵守。]
参考: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
格式:
%[flags][width][.precision][length]specifier
++specifier++
specifier:代表值的类型
specifier Output Example
整数
d或i 有符号的十进制数字 392
u 无符号的十进制数字 7235
o 无符号的八进制数字 610
x 无符号的十六进制数字,并以小写abcdef表示 7fa
X 无符号的十六进制数字,并以大写ABCDEF表示 7FA
f 浮点型的参数会被转成十进制数字[自:取到小数点以下六位,四舍五入] 392.65
e 浮点型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的e来表示。 3.9265e+2
E 与%e作用相同,唯一区别是指数部分将以大写的E 来表示。 3.9265E+2
g 浮点型的参数会自动选择以%f 或%e 的格式来打印,取位数较少的那个。 392.65
G 与%g 作用相同,唯一区别在以指数形态打印时会选择%E 格式。 392.65
字符及字符串
c 字符 a
s 字符串[自:指向字符串的参数会被逐字输出,直到出现NULL字符为止] sample
p 指针地址。 B800:0000
n Nothing printed. The argument must be a pointer to a signed int, where the number of characters written so far is stored.
% 仅用于打印%,即%%。
++flags, width, .precision 和 length++
flags, width, .precision 和 length是可选参数。
++flags++
flags description
- 左对齐,默认是右对齐 (参照 width 标志符).
+ 一般在打印负数时,printf()会加印一个负号,整数则不加任何负号。此旗标会使得在打印正数前多一个正号(+)。[自:注意,这个符号和-号不是相反的含义,而是代表着完全不同的领域的意思。]
空格 若符号为正,则显示空格,负则显示"-"。
# 此旗标会根据其后转换字符的不同而有不同含义。对于o, x 或 X 类型: 值前面会分别被强制打印出 0, 0x or 0X[自:例如"%#x"则19打印为0x13][自:注意对于o,会打印出0,而不是o。]
对于e, E and f类型:会强制打印出小数点。默认情况下,如果没有小数部分,则不会打印小数点。
对于g or G类型:于e和E相同,但是不会去掉尾部的小数点。
0 当左对齐时,不足的宽度(位数,空间)用0补齐,默认是用空格。前提是指定了最小位数,即width.
++
width++
width description
数字 最小的宽度(位数,空间)。如果值小于这个位数,则用空格补齐。如果值大于这个数值,则也不会被截断。
* 表示以下一个参数当做参数长度。[自:用于指定动态的宽度。]
++
precision++
.precision description
.number 对于整数 (d, i, o, u, x, X): precision 表示值的最少位数。如果值的位数小于这个宽度,则用0补齐。如果大于,则也不会被截断。如果是precision是,意味着如果值是0的时候,什么有不显示。
对于e, E and f:表示小数点后面的位数。
对于g and G :表示数值的有效位数的最大位数。[自:不太明白]
对于s: 表示打印字符串的最长长度。默认情况下会一直打印,直到遭遇null标志符。
对于c: 没有效果。
如果没有指定precision, 默认是1。 如果没有指定period则假定是0。[自:不太明白]
.* 表示以下一个参数当做precision。[自:用于指定动态的precision。]
++
length++
length description
h 表示参数是short int或者unsigned short int (只对整型有效: i, d, o, u, x and X).
l 对于 (i, d, o, u, x and X):表示参数是long int或者unsigned long int。对于c and s:表示是宽字符或字符串。
L 只对浮点型e, E, f, g and G有效:参数是long double类型.
+++++