文章目录
写在前面
对于刚入门C语言/C++的新手小白来说,程序输出的格式化总是令人头疼,今天,错先生带你通过一篇文章了解全部常见的C语言/C++格式化字符。
一、整数类型格式化
1. 十进制整数 %d
printf("我的身高是%d厘米", 180);
输出:我的身高是180cm
2. 八进制整数 %o
int a = 180;
printf("我的身高转换为八进制是%o厘米", a);
输出:我的身高转换为八进制是264厘米
3. 十六进制整数%x,%X
int a = 180;
printf("我的身高转换为十六进制是%x厘米", a);
int a = 180;
printf("我的身高转换为十六进制是%X厘米", a);
分别输出:
我的身高转换为十六进制是b4厘米
我的身高转换为十六进制是B4厘米
在了解了十进制、八进制以及十六进制的格式化字符转换后,uu们可能要问为什么没有二进制格式化字符转换了,实际上,在C语言中,没有对于二进制字符的格式化转换,原因是二进制字符一般输出形式将按照8个字节输出,而我们熟知的int类型数据仅占用4个字节。
二、浮点数类型格式化
1. 单精度浮点数float %f
float为单精度浮点数类型,精度较小于double类型,它的格式化主要包括保留小数位数、设置宽度以及左对齐、右对齐等。
float a = 179.97;
printf("我的身高是%f厘米\n", a);
printf("我的身高是%.2f厘米\n", a);
printf("我的身高是%-10.2f厘米", a);
我的身高是179.970001厘米
我的身高是179.97厘米
我的身高是179.97 厘米
当不指定保留的小数位数时,浮点数float类型将默认输出宽度为10的浮点数,上图第二种输出方法为指定输出保留2为小数的浮点数,第三种方法表示输出宽度为10、左对齐、保留两位小数的浮点数,如果没有数据输出,将以空格补齐。同时,当我们仅输入宽度、不输入负号时,将默认输出右对齐数据;相反,当我们不输入宽度时,将默认输出左对齐数据。
2. 双精度浮点数double %lf
double类型数据为双精度浮点型数据,能够较float型数据输出更为精确的浮点型数据。它的格式化为%lf。
double a = 179.97;
printf("我的身高是%lf厘米\n", a);
printf("我的身高是%.2lf厘米\n", a);
printf("我的身高是%-10.2lf厘米", a);
我的身高是179.970000厘米
我的身高是179.97厘米
我的身高是179.97 厘米
细心的小伙伴会注意到,double类型数据在不指定小数位数时的格式化输出与float类型数据的输出结果略有不同,实际上,这与double类型数据和float类型数据能够输出的精度有关,输出的具体结果还与内部定义的数据结构有关,感兴趣的小伙伴们可以深入学习一下哦!
3. 指数形式输出浮点数 %e,%E
double a = 179.97;
printf("我的身高是%e厘米\n", a);
printf("我的身高是%E厘米\n", a);
printf("我的身高是%.2e厘米", a);
我的身高是1.799700e+02厘米
我的身高是1.799700E+02厘米
我的身高是1.80e+02厘米
三、字符、字符串类型格式化
1. 字符(char)类型格式化 %c
printf("我的身高是%c%c%c厘米\n", '1','8','0');
我的身高是180厘米
C语言中并没有定义字符串数据类型,因此,在进行字符串处理与输出时使用C语言只能采用字符型数组进行处理;C++标准库string中包含了字符串数据类型,便于我们更加轻松地处理并输出字符串
2. 字符串(string)类型格式化 %s
#include<cstdio>
#include<string>
using namespace std;
int main()
{
printf("我的身高是%s厘米\n", "180");
return 0;
}
我的身高是180厘米
注意在此处需要包含标准库string,否则无法使用%s进行字符串的格式化。
四、其它 eg:%p 输出指针
除此之外,C语言/C++还包含各种形式的格式化字符输出,如%p,将格式化输出指针的值。
int p = 180;
int* ptr = &p;
printf("我的身高存放在%p\n", ptr);
我的身高存放在000000D8CBEFFB54
总结
在未来学习C语言/C++或是其它编程语言的道路上,正确输出所需结果是很关键的一步,尤其是在算法竞赛中,巧妙地输入输出也为正确作答提供了保障。好了,blog到此结束,希望对大家有所帮助,一起进步!