当我们使用printf库函数时,通常都有这样一种写法
printf("%2d",&a);
这类写法的意义都是以 右2 为标准线 ,未输出满2位数则自动填空格,输出满或超2位数贼正常输出(不懂请看VCR)(如果是3d则是右3标准线)
由此可见,在输出6的前面会有空格存在,因为未达到 右2标准线 ,所以自动填了一个空格
后两类输入大于等于右2标准线,所以正常输出了
那么我们该如何输出02,或者002呢,只需要在我们刚才所学的基础上加上个0就可以
不懂请看VCR
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
printf("%02d", a);
}
在刚才的基础上前面加了个0 ,就会把本该输出空格的地方换成0
别急着走 前后知识并不完全相同!!!
这里的 printf("%02d") 会让你输出两位数时把空格自动换成0
但是想输出 002 并不是说加个0就可以解决的!!!
如果我们想输出 002 ,只需要将02换成03即可(即printf("03");)
请看VCR!!
其实原理还是一样,以 右3 为标准线,未满的自动生成空格,并将空格替换成0
最后我们来总结一下
printf("%2d")会以右2为标准线,未达到自动填空格,大于等于2正常输出
printf("%02d")会把printf("%2d")里面的空格换为0
printf("%002d")并不会输出我们想要的数字(如007,008)
printf("%03d")才会输出 007,008 这类的数,原理就是因为用printf("%3d")输出单个数字6时,会自动打印两个空格,将这两个空格换成0,才会生成006