今天来好好总结一下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的用法进阶的更多相关文章

  1. sscanf和sprintf是scanf和printf家族用法 (转)

    sscanf和sprintf是scanf和printf家族用法 sscanf和sprintf是scanf和printf家族的一对成员,用于处理和分析字符串非常强大得两个函数头文件 stdio.h原型i ...

  2. C语言100个经典的算法之兔子总数计算内含printf的用法

    语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一 ...

  3. php中sprintf与printf函数用法区别

    下面是一个示例:四舍五入保留小数点后两位  代码如下 复制代码 <?php$num1 = 21;echo sprintf("%0.2f",$num1)."<b ...

  4. java中printf中用法详解

    目前printf支持以下格式: %c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% printf的格式控制的 ...

  5. printf函数用法小记

    By francis_hao    Aug 26,2017   C语言中printf函数是一个比较常用的函数,但是常用并不代表完全了解,本文翻译了printf的man手册,介绍了其全部功能(不包括ma ...

  6. shell中awk printf的用法

    打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返回一个带格式的字符串给 ...

  7. 异步操作之 Promise 和 Async await 用法进阶

    ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...

  8. printf中用法详解

    %c 单个字符 %d 十进制整数 %f 十进制浮点数 %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 %% 输出百分号% printf的格式控制的完整格式: %  -  0  m ...

  9. java中printf的用法

    目前printf支持以下格式:           %c        单个字符           %d        十进制整数           %f        十进制浮点数        ...

随机推荐

  1. OAuth2.0概念以及实现思路简介

    一.什么是OAuth? OAuth是一个授权规范,可以使A应用在受限的情况下访问B应用中用户的资源(前提是经过了该用户的授权,而A应用并不需要也无法知道用户在B应用中的账号和密码),资源通常以REST ...

  2. 使用JavaMail发送邮件(含文本/附件/图片)的工具类

    记录利用公司内搭建的smtp邮件服务器,使用javax mail发送邮件的程序 package com.test.mailTest; import java.util.Date; import jav ...

  3. 【转】小波与小波包、小波包分解与信号重构、小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)

    转:https://blog.csdn.net/cqfdcw/article/details/84995904 小波与小波包.小波包分解与信号重构.小波包能量特征提取   (Matlab 程序详解) ...

  4. jS Ajax 上传文件报错"Uncaught TypeError: Illegal invocation"

    使用jquery ajax异步提交文件的时候报Uncaught TypeError :Illegal invocation错误,报错信息如图: 错误原因: jQuery Ajax 上传文件处理方式,使 ...

  5. 自学 JAVA 的几点建议

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 许久不见,最近公众号多了很多在校的师弟师妹们.有很多同学都加了我微信问了一些诸如 [如何自学 Java ]的问题, ...

  6. 解决el-tree lazy懒加载时,连续勾选前两个子节点后第二次进入默认选中时,将父节点也勾选的问题

    在用到el-tree的懒加载和默认勾选功能时,若第一次勾选前几个连续节点,第二次进入默认勾选时,由于el-tree子节点尚未完全加载(只加载出来前几个),默认勾选已经开始(已加载出来的子节点被默认勾选 ...

  7. 曹工说Spring Boot源码(11)-- context:component-scan,你真的会用吗(这次来说说它的奇技淫巧)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  8. Oauth2的使用(第三方授权登录)

    例子: 京东商城 ,微博 ,用户三者之间的关系 第一方:用户 第二方:京东商城 第三方:微博 用户不希望在京东商城上注册,可以授权微博使用微博上的用户信息进行登录京东商城. 授权流程: 地址一:授权页 ...

  9. jenkins 配置ssh密钥登录

    1.找到一台服务器执行 ssh-keygen -t rsa 会在目录/root/.ssh生成id_rsa私钥.id_rsa.pub公钥,将公钥的内容写入到同目录下的authorized_keys文件( ...

  10. 【Java并发基础】使用“等待—通知”机制优化死锁中占用且等待解决方案

    前言 在前篇介绍死锁的文章中,我们破坏等待占用且等待条件时,用了一个死循环来获取两个账本对象. // 一次性申请转出账户和转入账户,直到成功 while(!actr.apply(this, targe ...