P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。

文章目录

  • 常见占位符一览
  • ” printf “
    •  “ printf ”含义
    •  “ printf ”中占位符的使用
    •  ” printf “中占位符格式
      •   [标志]
        •   [标志]使用举例
      •   [输出最少宽度]
      •   [.精度]
      •   [长度]
  • 总结 :

常见占位符一览

占位符介绍
%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.7fprintf(" %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(){shortn = 17;printf(" %hd ", n);return 0;}
 17

  “ %ho” :

 21

  “ %hx” :

 11

  “ %hu” :

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

  “ %ld” :

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

  “ %lx” :

 11

  “ %lo” :

 21

  “ %lu” :

int main(){longn = -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;}
0x11021777.000777777.700777.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 “类型

总结 :

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