网站首页 > 文章精选 正文
在上一个小demo《printf()函数(1)》中主要说了一下printf()函数的转换说明符,这些转移说明符是可以被修饰的。我们可以在%d和定义的转义字符之间通过插入修饰符对基本的转换说明加以修改。
printf()修饰符
- digit(s) 字符宽度的最小值
结果:
不够的前面补空格,超了的,不用补了。
- .digit(s) 精度
结果:
小数点前面表示的是字符宽度,不够的空格填充,小数点后面表示的是有多少个数字。
- h 和整数转换说明符一起使用,表示一个short int 或者unsigned short int
结果:
1024 本身就占了4个字段,所以1hd、2hd、3hd、4hd效果是一样的,5hd有一个空格填充在前面。
- hh 和整数转换说明符一起使用,表示一个short char 或者unsigned char
- l 和整数转换说明符一起使用,表示一个long int 或者unsigned long int
- ll 和整数转换说明符一起使用,表示一个long long int 或者unsigned long long int
- L 和浮点转换说明符一起使用 ,表示一个long deuble
- j 和整数转换说明符一起使用,表示一个intmax_t或者uintmax_t
- z 和整数转换说明符一起使用,表示一个size_t值(sizeof返回的类型)(C99)
- t 和整数转换说明符一起使用,表示一个ptrdiff_t值(两个指针之间的差相对应的类型)(C99)
这几个都是很基本的,就不过多的介绍了。
print()的标志
- - 项目是左对齐的:也就是说,会把项目打印在字段的左侧开始处
结果:
全部左对齐了
- + 有符号的值若为正,则显示带加号的符号:若为负,则带减号的符号
结果:
区分正负号,默认左对齐了。
- (空格) 有符号的值若为正,则显示时带前导空格(但是不显示符号);若为负,则带减号符号。+标志会覆盖空格标志
结果:
- #使用转换说明的可选形式。若为%o格式,则以0开始;若为%x和%X格式,则以0x或0X开始。对于所有的浮点形式,#保证了及时不跟任何数字,也打印一个小数点字符。对于%g和%G格式,它防止尾随零被删除
结果:
- 0对于所有的数字格式,用前导零而不是用空格填充字段宽度。如果出现-标志或者指定了精度(对于整数)则忽略该标志
结果:
printf()的返回值
printf()函数有一个返回值,返回的是所打印的字符的数目。
结果:
test code
#include <stdio.h>
int main()
{
int a = 1;
printf("a is %d\n", a);
printf("a is %2d\n", a);
printf("a is %3d\n", a);
printf("a is %4d\n", a);
printf("a is %5d\n",a);
printf("------------------\n");
float b = 1.1;
printf("b is %4.0f\n", b);
printf("b is %4.1f\n", b);
printf("b is %4.2f\n", b);
printf("b is %5.0f\n", b);
printf("b is %5.1f\n", b);
printf("b is %5.2f\n", b);
printf("------------------\n");
short int c = 1024;
printf("c is %hd\n", c);
printf("c is %2hd\n", c);
printf("c is %3hd\n", c);
printf("c is %4hd\n", c);
printf("c is %5hd\n", c);
printf("c is %6hd\n", c);
printf("------------------\n");
int d = 100;
printf("d is %-d\n", d);
printf("d is %-2d\n", d);
printf("d is %-3d\n", d);
printf("d is %-4d\n", d);
printf("d is %-5d\n", d);
printf("------------------\n");
double e = 100.100;
double f = -100.100;
printf("e is %+4.1f\n", e);
printf("e is %+4.2f\n", e);
printf("e is %+4.3f\n", e);
printf("f is %+4.1f\n", f);
printf("f is %+4.2f\n", f);
printf("f is %+4.3f\n", f);
printf("------------------\n");
double h = 100.100;
double j = -100.100;
printf("h is % 4.1f\n", h);
printf("h is % 4.2f\n", h);
printf("h is % 4.3f\n", h);
printf("j is % 4.1f\n", j);
printf("j is % 4.2f\n", j);
printf("j is % 4.3f\n", j);
printf("------------------\n");
int i = 100;
printf("i is %#d\n", i);
printf("i is %#o\n", i);
printf("i is %#x\n", i);
printf("------------------\n");
int k = 512;
printf("i is %0d\n", k);
printf("i is %01d\n", k);
printf("i is %02d\n", k);
printf("i is %03d\n", k);
printf("i is %04d\n", k);
printf("i is %010d\n", k);
printf("------------------\n");
int num = 10;
int rv;
rv = printf("I am %-d years old!\n",num);
printf("the printf() fun printed %-d characters.\n",rv);
return 0;
}
喜欢我文章的朋友,欢迎关注、点赞、评论、交流。
- 上一篇: 5.2 位运算符
- 下一篇: 16进制和ASCII的互相转换
猜你喜欢
- 2025-01-05 PHP源码系列之扩展的原理与开发
- 2025-01-05 「linux」多个套接字可以绑定同一个端口吗
- 2025-01-05 基于netmap的用户态协议栈(一)
- 2025-01-05 Linux文件:超级块inode dentry file关系
- 2025-01-05 实战Netty!基于私有协议,怎样快速开发网络通信服务
- 2025-01-05 char, unsigned char,之间的相互转换
- 2025-01-05 PHP 扩展与 ZEND 引擎的整合
- 2025-01-05 C语言:位域和字节序
- 2025-01-05 Nor Flash的两种规范
- 2025-01-05 「技术干货」Ip头udp数据包ARP协议(代码实现netmap)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)