文章目录
碎碎念前言
学习的时候,被printf中有关%输出相关知识搞蒙了,所以阅读了大量的资料写了这篇全是干货的博客。
前面是概览,可以用来快捷查找自己遗忘的内容;后半点时有关的可执行代码和执行后的结果,会有亿点点多(vs2022 32位环境下测试)。求一波关注!点赞!!收藏!!!
一、概览
1.整型相关
%d 整形输出 int类型
%md 总过输出m列,左对齐,输出整数多余m位则全要,不足的以空格补充 **m为整数下同**
%0md 总过输出m列,左对齐,输出整数多余m位则全要,不足的以 0 补充
%-md 总过输出m列,右对齐,输出整数多余m位则全要,不足的以空格补充
%-0md 总过输出m列,右对齐,输出整数多余m位则全要,不足的以空格补充
注意负号不要看丢了呀
%ld 长整型输出 对应 long int 类型
%lld 长长整型输出 对应 long long int 类型
%u 以十进制数输出无符号整型,注意!因为只打印无符号数,所以范围和有符号数不同哟。
2.八进制和十六进制
%o 以八进制数形式进行打印整数
%x 以十六进制数形式进行打印整数 a~f
%X 以十六进制数形式进行打印整数 A~F
3.浮点数相关
%f 打印浮点数 默认保留六位小数 对应 float 类型
%lf 打印双精度浮点数,默认六位小数 对应double 类型
%.nf 输出精度为n的浮点数
%m.nf 输出共占m列,其中精度为小数点后面n位,数值位数小于m左端补充空格
%-m.nf 输出共占m列,其中精度为小数点后面n位,数值位数小于m右端补充空格
注:小数点也算位数,n位大于小数位 后面补充领,小于小数位数,进行四舍五入
4.指数形式打印浮点数
%e 以指数形式打印浮点数,小数点后面保留6位
%E 以指数形式打印浮点数,小数点后面保留6位
%g 根据数值不同自动选择%f或者%e
%G 根据数值不同自动选择%f或者%E
5.字符和字符串相关
%c 用来输出一个字符
%s 用来输出一个字符串
%ms 输出的字符共占m位,字符串数大于m则全部输出字符串,字符串位数小于m则左补空格
%-ms 输出的字符共占m位,字符串数大于m则全部输出字符串,字符串位数小于m则右补空格
%m.n 输出的字符串总共占m位,但只取字符串左端n个字符,这n个字符靠右放置,左边补空格。
如果不设置n,则n等于0
%-m.n 输出的字符串总共占m位,但只取字符串左端n个字符,这n个字符靠左放置,右边补空格。
如果不设置n,则n等于0
6.打印指针和打印%
%p 打印指针
%% 输出 %
二、样例
1.整型相关样例
#include<stdio.h>
int main()
{
int num = 123;
printf("一般格式输出:%d***\n", num);
printf("当m小于输出位数时:%2d***\n", num);
printf("当m大于输出位数且左对齐用空格补齐时:%5d***\n", num);
printf("左对齐用 0 补齐时:%05d***\n", num);
printf("右对齐空格补齐时:%-5d***\n", num);
printf("右对齐用 0 补齐时:%-05d***\n", num);
return 0;
}
#include<stdio.h>
int main()
{
long int num1 = 123;
long long int num2 = 456;
unsigned int num3 = 789;
printf("长整型 == %ld\n", num1);
printf("长长整型 == %lld\n", num2);
printf("无符号整型 == %u\n", num3);
return 0;
}
2.八进制和十六进制样例
#include<stdio.h>
int main()
{
int num = 123;
printf("以八进制输出整数:>%o\n", num);
printf("以十六进制小写输出整数:>%x\n", num);
printf("以十六进制大写输出整数:>%X\n", num);
return 0;
}
3.浮点数相关样例
#include<stdio.h>
int main()
{
double dnum = 123.456;
printf("双精度浮点数:>%lf\n", dnum);
float fnum = 123.456f;
printf("单精度浮点数:>%f\n", fnum);
printf("小数点后面保留两位有效数字;>%.2f\n", fnum);
printf("向右对齐,总共输出十位,不足以空格补充,精度为二:>%10.2f***\n", fnum);
printf("向左对齐,总共输出十位,不足以空格补充,精度为二:>%-10.2f***\n", fnum);
return 0;
}
4.指数形式打印浮点数样例
#include<stdio.h>
int main()
{
double num1 = 123.456;
printf("e为小写时以指数形式打印浮点数:>%e\n", num1);
printf("E为大写时以指数形式打印浮点数:>%E\n", num1);
printf("g为小写时打印浮点数:>%g\n", num1);
printf("G为大写时打印浮点数:>%G\n", num1);
double num2 = 0.0000123;
printf("g为小写用%%g打印指数形式:>%g\n", num2);
printf("G为大写用%%G打印指数形式:>%G\n", num2);
return 0;
}
5.字符和字符串相关的样例
#include<stdio.h>
int main()
{
char c1 = 'c';
printf("%c\n", c1);
return 0;
}
#include<stdio.h>
int main()
{
char s[] = "hello MSDN";
printf("当m小于字符串时:>%5s***\n", s);
printf("当m大于字符串时,向右靠齐情况:>%20s***\n", s);
printf("当m大于字符串时,向左靠齐情况:>%-20s***\n", s);
printf("总共输出20个字符,但只输出字符串中的5个字符:>%20.5s***\n", s);
printf("当这里的n不设置时默认为 0 ,输出字符串中0个字符:>%-20.s***\n", s);
return 0;
}
6.打印指针和打印%样例
#include<stdio.h>
int main()
{
int num = 0;
int* p = #
printf("%p\n", p);
return 0;
}
#include<stdio.h>
int main()
{
printf("%%\n");
return 0;
}
总结
以上就是关于printf中的%输出的相关使用方法了,在日常的使用应该是够。如果有什么地方看不明白,或者发现了错误,或者有什么需要补充的,希望您能在评论区指出,先在此谢过了。
最后,感谢阅读!