P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。
文章目录
- 常见占位符一览
- ” printf “
- “ printf ”含义
- “ printf ”中占位符的使用
- ” printf “中占位符格式
- [标志]
- [标志]使用举例
- [输出最少宽度]
- [.精度]
- [长度]
- 总结 :
常见占位符一览
占位符 | 介绍 |
---|---|
%a | 十六进制浮点数,字母输出为小写 |
%A | 十六进制浮点数,字母输出为大写 |
%e | 使用科学计数法的浮点数,指数部分的e为小写 |
%E | 使用科学计数法的浮点数,指数部分的E为大写 |
%g | 6个有效数字的浮点数,整数部分如果超过6位,自动转化为科学计数法,指数部分e为小写 |
%G | 6个有效数字的浮点数,整数部分如果超过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 “类型
总结 :
占位符在实际代码应用过程中时常出现,熟练使用占位符可使工程更加精细化,本文主要用于个人学习和知识分享,学习路漫漫,如有错误,感谢指正。
如需引用,注明地址。