C语言中“printf”占位符用法详解

本文详细介绍了C语言中printf函数的各种占位符,包括%a-%llu的用法,以及如何通过标志控制输出格式,如宽度、精度和对齐方式。适合初学者和开发者查阅。
摘要由CSDN通过智能技术生成
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。
P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。

常见占位符一览

占位符介绍
%a十六进制浮点数,字母输出为小写
%A十六进制浮点数,字母输出为大写
%e使用科学计数法的浮点数,指数部分的e为小写
%E使用科学计数法的浮点数,指数部分的E为大写
%g6个有效数字的浮点数,整数部分如果超过6位,自动转化为科学计数法,指数部分e为小写
%G6个有效数字的浮点数,整数部分如果超过6位,自动转化为科学计数法,指数部分E为大写
%f输出为小数,包含“ float ”类型与“ double ”类型
%d十进制整数
%o八进制整数
%x十六进制整数
%u无符号整数( “ unsigned int ” )
%i等同于“ %d ”
%c单个字符
%s字符串
%hd十进制“ short int ”类型
%ho八进制“ short int ”类型
%hx十六进制“ short int ”类型
%hu“ unsigned short int ”类型
%ld十进制“ long int ”类型
%lx八进制“ long int ”类型
%lo十六进制“ long int ”类型
%lu“ unsigned long int ”类型
%lld十进制“ long long int ”类型
%llo八进制“ long long int ”类型
%llx十六进制“ long long int ”类型
%llu“ unsigned long long int ”类型
%Lf“ long double ”类型浮点数
%Le是用科学计数法的“ long double ”类型浮点数
%p指针( 打印出指针的地址 )
%n已经输出的字符串数量,此占位符本身不输出,只将其值储存在指定变量中
%zd“ size_t ” 类型 ( 用于输出“ sizeof ”的返回值)
%%输出一个百分号

" printf "

 “ printf ”含义


  printf: 字面理解由“ print ”和“ f ”组成(“ f ”代表“ format ”格式化),其作用是将参数文本输出到屏幕上,并定制化输出文本的格式,其中文本格式就由占位符来决定。

 “ printf ”中占位符的使用


  以下占位符使用顺序与上表顺序一致

  “ %a ” :

int main()
{
	float n = 0.7f;
	printf(" %a ", n );
	return 0;
}
 0x1.6666660000000p-1


  “ %A ” :

 0X1.6666660000000P-1


  “ %e” :

int main()
{
	float n = 0.7f;
	printf(" %e ", n );
	return 0;
}
 7.000000e-01


  “ %E” :

 7.000000E-01


  “ %g” :

int main()
{
	float n = 77777.7f;//超过6位数字举例7777777.7f
	printf(" %g ", n );
	return 0;
}
 77777.7// 7.77778e+06


  “ %G” :

 77777.7// 7.77778E+06


  “ %f” :

int main()
{
	float n = 7.7f;
	double m = 7.7;
	printf(" n = %f\n m = %f ", n , m);
	return 0;
}
 n = 7.700000
 m = 7.700000


  “ %d” :

int main()
{
	int n = 7;
	printf(" %d ", n );
	return 0;
}
 7


  “ %o” :

int main()
{
	int n = 17;
	printf(" %o ", n );
	return 0;
}
 21


  “ %x” :

int main()
{
	int n = 17;
	printf(" %x ", n );
	return 0;
}
 11


  “ %u” :

int main()
{
	int n = -7;
	printf(" %u ", n );
	return 0;
}
 4294967289


  “ %i” :

int main()
{
	int n = 7;
	printf(" %i ", n );
	return 0;
}
 7


  “ %c” :

int main()
{
	char n = 'a';
	printf(" %c ", n );
	return 0;
}
 a


  “ %s” :

int main()
{
	char arr[10] = 'abc';
	printf(" %s ", n );
	return 0;
}
 abc


  “ %%hd” :

int main()
{
	short  n = 17;
	printf(" %hd ", n);
	return 0;
}
 17


  “ %ho” :

 21


  “ %hx” :

 11


  “ %hu” :

int main()
{
	short  n = -7;
	printf(" %hu ", n);
	return 0;
}
 65529


  “ %ld” :

int main()
{
	long  n = 17;
	printf(" %ld ", n);
	return 0;
}
 17


  “ %lx” :

 11


  “ %lo” :

 21


  “ %lu” :

int main()
{
	long  n = -7;
	printf(" %lu ", n);
	return 0;
}
 4294967289


  “ %lld” :

int main()
{
	long long n = 17;
	printf(" %lld ", n);
	return 0;
}
 17


  “ %llo” :

 21


  “ %llx” :

 11


  “ %llu” :

int main()
{
	long long n = -7;
	printf(" %llu ", n);
	return 0;
}
 18446744073709551609


  “ %Lf” :

int main()
{
	long double n = 17;
	printf(" %Lf ", n);
	return 0;
}
 17.000000


  “ %Le” :

 1.700000e+01


  “ %p” :

int main()
{
	int n = 10;
	int* p = &n;
	printf(" %p ", p);
	return 0;
}
 0117FCEC


  “ %n” :

  “ %n "在VS2019环境下运行会报错,详情请看 :
  《printf() 中 %n 的用途是什么?》
  《printf()中%n格式说明符》

  “ %zd” :

int main()
{
	int a = 10;
	printf("%zd\n", sizeof(a));

	return 0;
}
 4


  “ %%” :

int main()
{
	printf(" %% ");
	return 0;
}
 %

 " printf "中占位符格式

  标准格式为 : [标志][输出最少宽度][.精度][长度]类型

  [标志]

标志介绍
+强制输出正数前面的+号,默认为左对齐
-左对齐输出,不足时在输出后方补充空格
0与输出最少宽度搭配,当输出内容不足最少宽度是左侧补0
*输出内容前补0,并指定宽度
#对o类,在输出时加前缀o;对x类,在输出时加前缀0x; 对e,g,f 类当结果有小数时才给出小数点。
  [标志]使用举例


    “ + ” :

int main()
{
	int n = 7;
	printf(" %+d ",n);
	return 0;
}
 +7


    “ - ” :

 int main()
 {
 	printf("%-5d\n", 123); 
	return 0;
 }
  123  //输出为"123  "


    “ 0 ” :

int main()
 {
 	printf(" %05d\n ", 123); 
	return 0;
 }
 00123


    “ * ” :

int main()
 {
 	printf(" %0*d\n ", 6, 123); 
	return 0;
 }
 000123


    “ # ” :

int main()
{
	int n = 17;
	double a = 777;
	double b = 777.7;
	printf("  %#x\n ", n);
	printf(" %#o\n ", n);
	printf(" %#g\n ", a);
	printf(" %g\n ", a);
	printf(" %#g\n ", b);
	printf(" %g\n ", b);
	return 0;
	return 0;
}
  0x11
  021
  777.000
  777
  777.700
  777.7


  [输出最少宽度]

int main()
 {
 	printf("%6d\n", 123); 
	return 0;
 }
   123//结果为空格空格空格123

  在“ % ”后添加数字可以用来限制输出的宽度,默认为右对齐,如需左对齐可在数字前添加“ - ”号。



  [.精度]

int main()
{
	printf(" %.3f\n", 1.5555);
	return 0;
}
 1.556

  使用[.精度]可以用来限定小数点后数字个数,如果原数数字个数大于精度个数,则四舍五入到精度个数,如果原数字个数小于精度个数,则补0。



  [长度]

  此处长度其实为变量数据类型长度,如" short int “类型,” long int "类型



总结 :

  占位符在实际代码应用过程中时常出现,熟练使用占位符可使工程更加精细化,本文主要用于个人学习和知识分享,学习路漫漫,如有错误,感谢指正。
  如需引用,注明地址。

  • 35
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言printf函数用于打印输出内容。对于浮点数的占位符,可以使用"%f"。例如,如果要输出一个浮点数变量b,可以使用printf("%f", b)来实现。 [1<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C语言之格式占位符](https://blog.csdn.net/qq_40740126/article/details/119569423)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C语言printf函数对整型,浮点型,字符型使用不同占位符(%d, %f, %c, %s)输出的研究](https://blog.csdn.net/m0_59469991/article/details/123972778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【C】printf()使用占位符精细控制输出格式](https://blog.csdn.net/SeaBiscuitUncle/article/details/126576539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值