C语言中printf与%的爱恨情仇

碎碎念前言

学习的时候,被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 = &num;
	printf("%p\n", p);
	return 0;
}

在这里插入图片描述

#include<stdio.h>
int main()
{
	printf("%%\n");
	return 0;
}

在这里插入图片描述

总结

以上就是关于printf中的%输出的相关使用方法了,在日常的使用应该是够。如果有什么地方看不明白,或者发现了错误,或者有什么需要补充的,希望您能在评论区指出,先在此谢过了。

最后,感谢阅读!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值