%d | 十进制有符号整数 (常用) |
%u | 十进制无符号整数 |
%f | 浮点数 |
%s | 字符串(常用) |
%c | 单个字符(常用) |
%p | 指针的值(常用) |
%e | 指数形式的浮点数 |
%x | %X 无符号以十六进制表示的整数 |
%o | 无符号以八进制表示的整数 |
%g | 自动选择合适的表示法 |
对于规定符的一些说明:
1、对于%d:
(1)%md: 指定输出的宽度。数据位数小于m,左端补空格;大于m,按实际位数输出。比如说%3d 表示输出3位整型数,不够3位右对齐。若想在输出值前加一些0, 就应在场宽项前加个0。例如%04d 表示在输出一个小于4位的数值时,将在前面补0使其总宽度为4位。
(2)%ld: 输出长整型数据。
(3)%-md:可以控制输出左对齐,没有则说明右对齐。
2、对于%f:
(1)%m.nf:表示最大场宽为m,小数位为n,整数为则为m-n-1,不够m为右对齐。 例如:%6.2f表示输出场宽为6的浮点数,小数点后保留2为小数,整数位为3位,小数点占一位。
(2)%-m.nf:表示可以控制输出左对齐。
(3)%lf:表示输出double型浮点数。
3、对于%s
(1)%-5s:表示输出5个字符左对齐,没有负号则右对齐。
(2)%6.9s:表示一个长度不小于6且不大于9的字符串,若大于9,则第9个后面的字符将被删除。
具体举例
1、printf("&2d",123);因为输出的部分有三位数,但是要求的有两位,所以原样输出为:123
2、printf("%5d",123);因为输出的部分有三位,但是要求5位。不足的左边补空格
,所以输出的为: 123(这里前面有两个空格)
3、printf("%10f",1.66);
%f输出,前面不指定小数位数的,就补足6位小数。前面指定小数位数的,按照指定小数位数输出。
这个要求是printf函数内部的规定,就相当于它的一个case语句的default.
只要不指定,默认就是6位小数。
f前面是整数的,就是没指定小数位,只指定了总宽度。10f就输出总宽是10(包括符号,小数点,数字),不够在前面补空格。
所以输出为: 1.660000
4、printf("%5.3f",1.66);小数三位,整个数为5位(其中小数点也算一位),所以输出结果位:1.660
5、printf("%3.1f",1.66);小数1位,整体三位(此时要进行四舍五入),所以输出为:1.7