当前位置: 首页 > news >正文

printf 详解 - 你所不知道的printf用法

系列文章目录

printf 详解 - 你所不知道的printf用法
scanf 详解 - 你所不知道的scanf用法
持续更新中…


文章目录

  • 系列文章目录
  • 一.printf的概念
  • 二.printf的使用
    • 1.输出字符串
      • ①直接输出字符串
      • ②直接输出字符串变量
      • ③标准输出字符串
    • 2.输出数字
      • ①常规输出
      • ②十进制输出技巧
      • ③八进制和十六进制输出技巧
  • 三.常用转义字符
  • 五.深水炸弹
    • 问题:下面这段代码的输出结果为多少
    • 解答:
  • 六.小结

一.printf的概念

定义:printf 是 (print format) 的缩写是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息

调用格式:printf("<格式化字符串>",<参量表>);

二.printf的使用

1.输出字符串

①直接输出字符串

输出格式:printf("hello world!");

printf输出字符串的方式有很多,在我们最开始学习C语言时,我们会输出"hello world!",这样的方式属于直接输出字符串。它是根据'h'的地址向后一个一个进行打印,直到遇到'\0'才会停止,而"hello world!'\0'"其实是有'\0'的,只是被隐藏了,在这里我就不细讲了,后面我会出一期字符串的相关知识进行解释。当然我们也不需要这么复杂的去这样记,这里是为第二种输出方式做铺垫的。

②直接输出字符串变量

输出格式:printf(str);

在这样输出之前我们要先做一件事情char str[] = "hello world";我们需要先创建一个存储字符串的数组。这样创建的字符串"hello world!'\0'"也是有'\0'在里面的,只是被隐藏了。在这里str所指向的是首字符h的地址,它也是通过str所指向的h的地址向后进行打印,直到遇到'\0'停止,这样的方法更为简单快捷,但我依然推荐后面要讲到的标准的输出格式。

③标准输出字符串

输出格式:printf("%s", str);

这样的输出方式依然是要char str[] = "hello world";先创建一个存储字符串的数组,然后通过这样的格式输出。这样输出能让读者这更清楚的读懂你这一步是要做什么事情,也有利于后期自己的阅读。

2.输出数字

①常规输出

在这里我们只需要先创建一个整形变量int num1 = 10;和一个浮点型变量double num2;

输出格式释义
printf("%d", num1);%d是以十进制的方式进行输出。
printf("%o", num1);%o是以八进制的方式进行输出。
printf("%x", num1);%x是以十六进制的方式进行输出。
printf("%u", num1);%u是将符号位默认为数值方式进行输出。
printf("%f", num2);%f是以浮点数的方式进行输出。

②十进制输出技巧

在这里我们只需要先创建两个整形变量int num = 10;int count = 5;

输出格式释义
printf("%2d", num);%2d它所表示占2个输出位置,数字靠右对齐,位数不足2个则在左边补空格
printf("%-2d", num);%-2d它所表示占2个输出位置,数字靠左对齐,位数不足2个则在右边补空格
printf("%*d", count, num);%*d表示占count = 5个输出位置,数字靠右对齐,位数不足5个则在左边补空格
printf("%-*d", count, num);%-*d表示占count = 5个输出位置,数字靠左对齐,位数不足5个则在右边补空格
printf("%.4d\n", num);%.4d表示占4个输出位置,如果输出的内容不足4位则只在左边用零填充
printf("%04d\n", num);%04d表示占4个输出位置,如果输出的内容不足4位则只在左边用零填充

③八进制和十六进制输出技巧

在这里我们只需要先创建一个整形变量int num = 10;

输出格式释义
printf("%#o\n", num);输出八进制前面的0
printf("%#x\n", num);输出十六进制前面的0x

三.常用转义字符

转义字符释义
\’用于表示字符常量’
"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字
\xdddd表示2个十六进制数字

五.深水炸弹

问题:下面这段代码的输出结果为多少

printf("%d",printf("%d",printf("%d",43)));

解答:

printf的返回值:printf函数的返回值是打印的所有字符的总数(包括转义字符)。

这道题令我印象极其深刻,我认为有必要拿出来专门讲一下。首先我们要思考printf("%d", 43)的结果为多少?至少我第一次遇到的时候毫无头绪,但我们要知道printf()是一个函数,所以我们这里我们可以创建一个变量来接收这个值。

inta=12;a=printf("%d",43);printf("\na = %d\n",a);

这里我创建了一个变量a来接收printf("%d\n", 43);的返回值,输出结果a = 2得到这个输出结果的时候我就有了一点才想,这么无厘头的值该不会是有几个数吧!当然现在我还不能确定,我于是又进行了几次尝试。

//测试:当111的输出结果inta=12;a=printf("%d",111);printf("\n%d\n",a);

在几次尝试过后我确定了printf()的返回值确实是 “数字的个数” 。最后我通过分析这道题的输出结果为4321

补充:

inta=printf("num=%d\n",43);printf("%d",a);// 结果为7

原因:里面有7个字符(包括转义字符,%d被43所代替,视为两个字符)。

六.小结

正是因为这样一道题,我认为我有必要对于每个函数的特性进一步的学习和研究,所以也从这篇博客开始,我将持续更新C语言标准库函数的函数详解,如果我的内容中出现错误也很乐意接受批评指点,希望每个看到我博客的人都能从中有所收获,而非无功而返,当然我会回再接再厉继续更新更为优质的博客与大家一起分享一起进步。

http://www.cnnetsun.cn/news/4008013.html

相关文章:

  • 网站建设公司生存:在红海厮杀中找路的那些事儿,真相有点扎心
  • 在自己的电脑建设空间网站:从0到1打造你的个人数字家园全指南
  • 中国建设银行官网站一站式攻略:如何安全便捷地办理个人及对公业务,避坑指南与实用技巧全解析
  • DTLS、ICE--用janus举例
  • OpCore-Simplify:30分钟搞定黑苹果配置的智能神器
  • 长沙营销型网站建设公司:如何避坑指南与流量转化秘籍
  • 微信聊天记录永久保存指南:如何将碎片对话变成宝贵数字资产?
  • 广州品牌网站建设公司揭秘:2024年如何选择一家靠谱的数字化外衣制作商与避坑指南
  • 网站建设需要学习什么:零基础小白逆袭实战指南与核心技能全解析
  • 绵阳网站建设公司揭秘:如何打造高转化率的企业官网并避开营销陷阱
  • 花都网站建设公司哪家强?揭秘本地专业团队如何帮企业打造高转化官网
  • 个人网站建设教程:从零开始打造你的专属网络名片与流量阵地
  • 专业公司网站建设方案书定制与企业数字化转型指南:从策划到上线的全链路解析
  • 成都php网站建设如何选择靠谱的开发团队与构建高效稳定系统的深度避坑指南
  • 济南网站建设工作室如何选择靠谱团队避坑指南与实战经验全解析
  • 福州网站建设公司哪家好?避坑指南与深度测评让你少走弯路
  • 咸宁网站建设公司如何帮你在本地市场脱颖而出:一份来自一线从业者的真心话
  • 上海网站建设哪家便宜且靠谱?揭秘行业底价与避坑指南,老板必看!
  • 第6章:移动端开发:01-移动开发体检预约
  • 政务网站建设方案详解:打造透明高效的服务型政府数字名片
  • 自己人网站建设怎么选:从源码解析到落地交付的避坑指南
  • 揭秘郑州网站建设专家背后的真实逻辑与未来趋势
  • 安徽高端网站建设如何实现品牌差异化与流量转化的双重突破
  • 大麦网抢票脚本逆向工程:从零构建自动化购票系统的完整指南
  • 合肥手机网站建设:如何让您的企业在移动端流量红利中精准获客并转化
  • 从零开始掌握网站建设学习资料:普通开发者的逆袭指南与实战心法
  • 深耕移动互联时代,深圳手机网站建设公司如何助力企业实现数字化转型与流量突破
  • 深入解析网站建设合同英文版:从避坑指南到核心条款的全方位实战指南
  • 东莞网站建设多少钱,资深老哥掏心窝子告诉你底价与避坑指南
  • 吉安市网站建设:从本地中小企业的数字化转型看网站优化的未来走向