携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情
举一个的例子(字段宽度在打印整数时的效果)
#include <stdio.h>
#define PAGES 959
int main(){
printf("*%d*\n",PAGES );
printf("*%2d*\n",PAGES );
printf("*%10d*\n",PAGES );
printf("*%-10d*\n",PAGES );
return 0;
}
运行结果
转换说明
- 第一个转换说明没有修饰符,其对应的输入结果与带整数字段宽度的转换说明的输入结果相同。在默认情况下,没有任何修饰符的转换说明,直接打印。
- 第二个转换说明是%2d,对应的输出结果应该是2字段宽度,因为待打印的整数有3位数字,所以字段宽度自动扩大来符合整数的长度。
- 第三个转换说明是%10d,其对应的输出结果有10个空格宽度,所以两个星号之间有7个空格和3位数字,并且数字位于字段右侧。
- 最后一个转换说明是%-10d,其对应的输出结果同样是10个空格宽度,负号(-)标记说明打印的数字位于字段的左侧。
举一个浮点型格式的例子
#include <stdio.h>
int main(){
const double RENT = 3852.99;
printf("*%f*\n",RENT );
printf("*%e*\n",RENT );
printf("*%4.2f*\n",RENT );
printf("*%3.1f*\n",RENT );
printf("*%10.3f*\n",RENT );
printf("*%10.3E*\n",RENT );
printf("*%+4.2f*\n",RENT );
printf("*%010.2f*\n",RENT );
return 0;
}
运行结果
这里使用了const关键字,限定变量为只读。
转换说明解释
- 第一个转换说明是%f。在这种情况下,字段宽度和小数点后面的位数是系统默认设置,即字段宽度是容纳待打印数字所需的位数和小数点后打印6位数字。
- 第二个转换说明%e,默认情况下,编译器在小数点的左侧打印1个数字,在小数点的右侧打印6个数字。这样太多了,所以规定小数点右侧显示位数(指的是转换说明)。
- 第3456个例子就是规定小数点右侧显示位数(转换说明)。第4个和第6个进行了四舍五入,第六个E用e来代替。
- 第7个转换说明包含了+标记,这使得打印的值前面多一个+符号。0标记使得打印的值前面的0填充来满足要求。注意,转换说明%012.2f的第1个0是标记,(.)之前,标记以后的数字是指定的字段宽度。