printf转换说明的可选项

来源:互联网 发布:ocr识别软件绿色版 编辑:程序博客网 时间:2024/04/26 07:03

表 25.1. printf转换说明的可选项

选项描述举例#八进制前面加0(转换字符为o),十六进制前面加0x(转换字符为x)或0X(转换字符为X)。printf("%#x", 0xff)打印0xffprintf("%x", 0xff)打印ff。-格式化后的内容居左,右边可以留空格。见下面的例子宽度用一个整数指定格式化后的最小长度,如果格式化后的内容没有这么长,可以在左边留空格,如果前面指定了-号就在右边留空格。宽度有一种特别的形式,不指定整数值而是写成一个*号,表示取一个int型参数作为宽度。printf("-%10s-", "hello")打印-␣␣␣␣␣hello-printf("-%-*s-", 10, "hello")打印-hello␣␣␣␣␣-。.用于分隔上一条提到的最小长度和下一条要讲的精度。见下面的例子精度用一个整数表示精度,对于字符串来说指定了格式化后保留的最大长度,对于浮点数来说指定了格式化后小数点右边的位数,对于整数来说指定了格式化后的最小位数。精度也可以不指定整数值而是写成一个*号,表示取下一个int型参数作为精度。printf("%.4s", "hello")打印hellprintf("-%6.4d-", 100)打印-␣␣0100-printf("-%*.*f-", 8, 4, 3.14)打印-␣␣3.1400-。字长对于整型参数,hhhlll分别表示是charshortlonglong long型的字长,至于是有符号数还是无符号数则取决于转换字符;对于浮点型参数,L表示long double型的字长。printf("%hhd", 255)打印-1

常用的转换字符有:

表 25.2. printf的转换字符

转换字符描述举例d i取int型参数格式化成有符号十进制表示,如果格式化后的位数小于指定的精度,就在左边补0。printf("%.4d", 100)打印0100。o u x X取unsigned int型参数格式化成无符号八进制(o)、十进制(u)、十六进制(x或X)表示,x表示十六进制数字用小写abcdef,X表示十六进制数字用大写ABCDEF,如果格式化后的位数小于指定的精度,就在左边补0。printf("%#X", 0xdeadbeef)打印0XDEADBEEFprintf("%hhu", -1)打印255。c取int型参数转换成unsigned char型,格式化成对应的ASCII码字符。printf("%c", 256+'A')打印A。s取const char *型参数所指向的字符串格式化输出,遇到'\0'结束,或者达到指定的最大长度(精度)结束。printf("%.4s", "hello")打印hell。p取void *型参数格式化成十六进制表示。相当于%#xprintf("%p", main)打印main函数的首地址0x80483c4。f取double型参数格式化成[-]ddd.ddd这样的格式,小数点后的默认精度是6位。printf("%f", 3.14)打印3.140000printf("%f", 0.00000314)打印0.000003。e E取double型参数格式化成[-]d.ddde±dd(转换字符是e)或[-]d.dddE±dd(转换字符是E)这样的格式,小数点后的默认精度是6位,指数至少是两位。printf("%e", 3.14)打印3.140000e+00。g G取double型参数格式化,精度是指有效数字而非小数点后的数字,默认精度是6。如果指数小于-4或大于等于精度就按%e(转换字符是g)或%E(转换字符是G)格式化,否则按%f格式化。小数部分的末尾0去掉,如果没有小数部分,小数点也去掉。printf("%g", 3.00)打印3printf("%g", 0.00001234567)打印1.23457e-05。%格式化成一个%printf("%%")打印一个%


原创粉丝点击