C语言中(%d %.2d %2d %02d)(%2x, %02x, %-2x, %.2x)(%f, %.2f, %2.2f)(%e, %.2e,%3.2e)的区别
目录
%d %.2d %2d %02d
%d:即为普通的输出,是几位数就输出几位数。
%2d:按宽度为2输出,右对齐方式输出。若不够两位,左边补空格。
%02d:同样宽度为2,右对齐方式。位数不够,左边补0。
%.2d:从执行效果来看,与%02d一样。
%-2d:-号表示右边补空格
#include<stdio.h>
int main()
{
int a = 2;
printf("%d\n", a);// % d:即为普通的输出, 是几位数就输出几位数。
printf("%-2d\n", a);//% -2d: - 号表示后补空格
printf("%2d\n", a);//% 2d:按宽度为2输出,右对齐方式输出。若不够两位,左边补空格。
printf("%.2d\n", a);//% .2d:从执行效果来看,与 % 02d一样。
printf("%02d\n", a);//% 02d:同样宽度为2,右对齐方式。位数不够,左边补0。
return 0;
}
%2x, %02x, %-2x, %.2x
x:表示以十六进制形式输出,
%02x: 表示不足两位,前面补0输出;如果超过两位,则实际输出
%.2x:效果和%02x相同 (%02x=%.2x)
%2x:表示数据不足两位时,前面补空格; 如果超过两位,则实际输出
%-2x:表示数据不足两位时,后面补空格; 如果超过两位,则实际输出
#include<stdio.h>
int main()
{
printf("%02X\n", 0x255);//超过两位,实际输出
printf("%02X\n", 0x5);//不足两位,前面补0输出
printf("%2X\n", 0x255);//超过两位,实际输出
printf("%2X\n", 0x5);//不足两位,前面补空格输出
printf("%-2X", 0x5);//不足两位,后面补空格输出
printf("#");//验证后面有空格
return 0;
}
%f, %.2f, %2.2f
%f:不限制宽度和小数点后面的位数
%6.2lf:表示限制数据输出宽度为6, 这个数据宽度还包括小数点 不足宽度的前面补空格。超过宽度的数据正常输出。
%.2f:表示小数点后面保留两位小数。
#include<stdio.h>
int main()
{
double num = 3.1415;
printf("%f\n", num);
printf("%6.2lf\n", num);
printf("%.2lf\n", num);
return 0;
}
%e, %.2e,%3.2e
%e:以指数形式打印数字
在不指定输出宽度的情况下默认数字部分小数点6位,指数占4位。
注意:小数点不算小数部分,指数e与 + / -都算指数位数。
% m.ne : m表示输出列数,n表示有几位小数
当输入列数 > m时按原数据输出
当 < m时前补空格输出
% -m.ne表示后面补空格。
% .2e表示不限制输出列数,小数部分保留2位。
#include<stdio.h>
int main()
{
printf("%e\n", 123.456);
printf("%.2e\n", 123.456);
printf("%13e\n", 123.456);
printf("%-13e#\n", 123.456);
printf("%13.2e\n", 123.456);
printf("%-13.2e\n", 123.456);
return 0;
}