printf的用法进阶
今天来好好总结一下C语言中关于printf的常用用法
基础部分
printf("%d\n", numInt);
printf("%f\n", numFloat);
printf("%c\n", aChar);
printf("%s\n", str);

这些都过于简单,我就不细述了!
进阶部分
printf("%o\n", num);
在这个语句中,%o 表示的意思是以八进制输出 num 这个数!如下图:

printf("%x\n", num);
同 %o 差不多,%x 表示以十六进制输出 num 这个数字!如下图:

怎么样,有了这两个用法是不是加强了八进制、十进制和十六进制之间的关系呢?
当然,我要介绍的还不止这些!
下面再说说占位方面的那些事吧!
printf("%10d\n", numInt);
在%d的中间加入一个数字 10 表示什么意思呢?先让我们看看这张图:

显然,我们的数字 16 似乎跑到后面去了呢!
哈哈~这就是这个数字 10 的作用!当我们在%和d之间加一个数,这个数就会被用来表示位宽(数字本身所占位宽也被计算在内)!
那我想在这个数的后面补位怎么办?简单,直接在10前面加上一个-即可!
printf("%-10d\n", numInt);就表示在数字后面补位!

其实,这种用法更常见的是在小数类型中!下面让我们一起看看这个语句吧!
printf("%6.4f\n", numFloat);
这个语句是什么意思呢?先解说一下,这个6.4不是简单当作一个数来看待的哦!这个6表示保留5位有效数字(为什么是5?因为小数点也会占一位啊!), .4表示保留四位小数!如下图:

那要我输入的不是6,而是一个更大的数,大到超过了这个小数的整体位宽怎么办?不用怕!他会和%10d的效果一样,自动在这个数的前面补齐所需占位!如下图:

同样的,-号表示在这个数的后面补位!
但要是 4 这个数过大怎么办?额~用 0 补齐呗...如下图:

不过还有个问题,要是我们的这个数的位宽在变化怎么办?不写.前面的数字呗~
那要是我想写怎么办?
既然你诚心诚意的发问了,那我就(啪!~つ﹏⊂)...
printf("%*.4f\n", numInt, numFloat);
这个语句就可以完美的解决这个问题!%*就表示占numInt位!如下图:

printf的返回值
最后一个小白们都很关心的问题,那就是printf的返回值到底是什么?其实,printf的返回值是一个整数类型的数字,是打印的字符个数,而并非几个数字、几个字符。和位宽的概念一致,如下图:

更多的细节,大家可以自己上机自己测试哦!
printf的用法进阶的更多相关文章
- sscanf和sprintf是scanf和printf家族用法 (转)
sscanf和sprintf是scanf和printf家族用法 sscanf和sprintf是scanf和printf家族的一对成员,用于处理和分析字符串非常强大得两个函数头文件 stdio.h原型i ...
- C语言100个经典的算法之兔子总数计算内含printf的用法
语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一 ...
- php中sprintf与printf函数用法区别
下面是一个示例:四舍五入保留小数点后两位 代码如下 复制代码 <?php$num1 = 21;echo sprintf("%0.2f",$num1)."<b ...
- java中printf中用法详解
目前printf支持以下格式: %c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% printf的格式控制的 ...
- printf函数用法小记
By francis_hao Aug 26,2017 C语言中printf函数是一个比较常用的函数,但是常用并不代表完全了解,本文翻译了printf的man手册,介绍了其全部功能(不包括ma ...
- shell中awk printf的用法
打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返回一个带格式的字符串给 ...
- 异步操作之 Promise 和 Async await 用法进阶
ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...
- printf中用法详解
%c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% printf的格式控制的完整格式: % - 0 m ...
- java中printf的用法
目前printf支持以下格式: %c 单个字符 %d 十进制整数 %f 十进制浮点数 ...
随机推荐
- [vsCode实践] 实践记录
[vsCode实践] 实践记录 版权2019.5.1更新 Q1:代码中涉及到操作本地文件时,相对路径总是不对 操作本地文件时,路径方式有两种 相对路径 例如:代码文件所在路径/Users/tp0829 ...
- Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来
Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来 要了解一个新知识我们可以从三个方面入手:是什么,有什么用,怎么用.下面我们就从这三个方面进行讲解Reveal.js噢 ...
- 微信小程序开发笔记(一)
一.为什么要学习微信小程序开发 微信小程序是一个可以在微信上打开的轻应用,他是由多个页面组成的程序,跟传统APP比较如下: 优点 1.不需要在应用商店下载,不占用内存空间,即开即用 2.可以在微信内直 ...
- spring-boot序章:打造博客系统
blog 使用spring-boot打造一个博客系统,在项目中学习! 项目功能 文章 游览 创建 编辑 删除 评论 用户 游客 注册用户 关注 被关注 后台统计 注册用户数 在线人数 文章总数 评论总 ...
- 关于Integer 和Double包装类创建对象时的底层解析
public void method1() { Integer i = new Integer(1); Integer j = new Integer(1); System.out.println(i ...
- 变量内容的删除、取代与替换(optional)
这部分内容非常繁琐且不易记忆且枯燥,用到来查询即可. 1.变量内容的删除 这一部分比较细枝末节,就不再一一手打了,贴范例图片 #:符合取代文字的最短的一个 ##:符合取代文字的最长的一个 2.变量内容 ...
- APICloud开发者进阶之路 |iOS修改entitlements文件
本文出自APICloud官方论坛, 感谢论坛版主 技术咨询-Kenny 的分享. 一.概述iOS原生开发中若要实现某些特殊功能,如使用HealthKit.实现Universal Links等.需要 ...
- SpringCloud之Eureka(服务注册和服务发现基础篇)(二)
一:Eureka简介 Eureka是Spring Cloud Netflix的一个子模块,也是核心模块之一.用于云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. ...
- springcloud复习2
Hystrix断路器 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导 ...
- Window初始化Git环境
安装Git 去到官网下载地址,找到自己电脑的对应版本,下载安装就好啦,这里就不一一说明了 https://git-scm.com/download/win 初始化Git环境 第一步:打开git-bas ...


