序言
这个主要说一下,%5d 、%-5d、%2.3f等这些转换说明的作用和区别,这里面归根到底都是 %m.pX 的变体,
下面我就依次说一下 m、p、X都是什么
- X 数据输出格式
- m 最小字段宽度
- p 精度
数据输出格式
数据输出的格式与很多,下面我列出一张表
X | 例子 | 说明 |
---|---|---|
d | %d | 打印int型,m默认1 |
f | %f | 打印float型,小数点后默认6位 |
e | %e | 以科学计数法的形式打印,小数点后默认6位 |
g | %g | 以科学计数法或者float型打印,方式看g的大小选择 |
e
例子
#include <stdio.h>
int main()
{
float a = 1001.0f;
printf("%e\n", a);
return 0;
}
g
例子
#include <stdio.h>
int main()
{
float a = 1001.0f;
printf("a == %g\n", a);
float b = 1000000.132f;
printf("b == %g\n", b);
return 0;
}
最小字段宽度
m 代表我们要输出的数值占据多少字宽,我们先看看例子
这个代码是指我们 为a 分配10个字宽,要是a的数据长度不够10个,用空格填充
- + 表示数据在后
- - 表示数据在前
#include <stdio.h>
int main()
{
int a = 11;
printf("%10d\n", a); // + 号省略
printf("%-10d\n", a);
return 0;
}
或许有人可能会疑惑,当我们数值的长度大于 m 的值会发生什么,其实从m的名字就可以知道了,m是最小字段宽度,但我们给的数据的长度大于m,会打印出数值的值
#include <stdio.h>
int main()
{
int a = 11111111;
printf("%5d\n", a);
return 0;
}
这里要提一句 %10d 当中, m = 10, p = 0 ,X = d 当我们将p省略时,逗号也一起省略了
精度
谈到精度就要提到浮点数了,也就是我们数学中的小数,我们都知道小数是由精度的,比如说 小数点后保留三位,这在C语言中也可以通过p表示出来
- %.2f 表示 小数点保留2位
- %4.2f 表示最小字段是4,小数点后保留2位
#include <stdio.h>
int main()
{
float a = 1.0f;
printf("%15.2f\n", a);
return 0;
}
%.2f 要是我们省略m,逗号不跟着省略