赞
踩
当我们开始学习c语言时,我们接触到的第一个代码运行结果大概是这样的吧!
完成这样的代码仅需用到一个简单的函数 printf(),但就是这样一个函数有时也让人摸不着头脑,毕竟要想活用它,也要用心专研一下。
int printf( const char *format [, argument]… );
参数部分:格式表列 + 输出表列
返回值:输出的字符个数
注意是输出的字符
转义字符 = 1个字符
中间的两个双引号及其中间的空格不做计算,至于其作用下面会介绍
转换说明 | 输出 |
---|---|
%d | 有符号十进制整数 |
%f | 有符号的十进制浮点数,属于double类型 |
%c | 单个字符 |
%s | 字符串 |
%e(可大写) | 浮点数,e计数法 |
%p | 打印地址 |
%u | 打印无符号十进制整数 |
%x(可大写) | 打印十六进制整数 |
%o | 打印八进制整数 |
%% | 打印一个% |
对于上述两个可大写的转换说明,其大小写区别如下:
%x
小 10 对应 a
大写 10 对应 A
%e同理
字母 | 意义 |
---|---|
h | 与整型转换类型说明一起用,表示short int 和 unsigned int类型的值,如%hd, %hu |
hh | 与整型转换类型说明一起用,表示signed char和 unsigned char类型的值,如%hhd, %hhu |
l | 与整型转换类型说明一起用,表示long int 和 unsigned long int类型的值,如%ld,%lu |
ll | 与整型转换类型说明一起用,表示long long int 和 unsigned long long int 类型,如%lld, %llu |
L | 与浮点型转换说明一起使用,表示long double类型,如%Lf |
z | 与整型转换类型说明一起用,表示size_t (即unsigned int),是sizeof的返回类型 |
标记 | -,+,#,0,空格 |
数字 | 用于%m.n+(修饰符)+转换类型,m和n为整数 |
解释:
- 结合修饰符和转换类型发现没有表示float类型?
printf在打印浮点数时,float类型自动转换为double类型,%f,%lf,都是double类型,所以并没有float的专用转换说明
但我们打印数据时,有时需要对数据进行精度控制,以及数据所占格数。而这就要用到数字
数字的输入可以归为 “m.n”,m,n均为整数,且二者可以只存在其中一个,如%8.2d: m=8, n=2,%.3f:m不存在,n = 3
- m - 给点的字段宽度,如果给定的字段宽度小于实际宽度,则以实际为准
- n - 对应整型:无影响;对浮点数:保留n位小数;对字符串:截取前n个字符打印
负号(-):将打印项左对齐
+:有符号的值,若为正数,则前面显示+,若为负数则前面显示-
#:对于%x,%X,是将前置0x加上,%o是将前置0加上,
0:对于数值格式,用前导0代替空格填充字段宽度,对于整数格式,如果出现-和制定精度,则忽略该标记
空格:对于有符号值,若为正,则在值前显示前导空格,若为负,则在值前显示-
对于下列字符打印需要用到转义字符
- 输出表列即可以是:变量,也可以是常数
- 输出表列应与格式控制里的类型转换一一对应
**在这里只做浅显的解释: **
不同的系统,不同的编译器参数传递的方式并不完全相同,笔者采用的是64位,windows,vs2022、想细致的了解,则需要知晓数据在内存中的存储相关的知识,这里不做过多解释
作为初学者应保证,数据类型与转换说明是一一对应的。
最后,望各位未来的编程大佬点个小小的赞!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。