今天来好好总结一下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. 【一起学源码-微服务】Nexflix Eureka 源码四:EurekaServer启动之完成上下文构建及EurekaServer总结

    前言 上篇文章已经介绍了 Eureka Server上下文创建相关的Eureka Client逻辑,这一部分还是比较复杂的.接下来就讲解下Eureka Server上下文初始化最后的部分,然后加上整个 ...

  2. C++简单项目--贪吃蛇

    在800*600的地图上,蛇的初始长度为3节,用数组记录每一节的位置(每个正方形左上角的坐标),每一节为长度为10的正方形,初始方向向右.随机生成30个障碍物的的位置,随机生成食物的位置.吃到食物之后 ...

  3. 1.2 UML带来了什么(学习笔记)

    需求->需求分析->设计->开发 uml 编号 uml元素 对于语言理解 1 元模型 基本词汇 2 表示法或视图 语法 3 RUP 方法(统一软件开发过程)  方法 4 控制类 定语 ...

  4. Java工作流系统-父子流程的配置讲解

    父子流程 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单 工作流系统 适配数据库: oralce,mysql ...

  5. 面试中经常问到的Redis七种数据类型,你都真正了解吗?

    前言 Redis不是一个简单的键值对存储,它实际上是一个支持各种类型数据结构的存储.在传统的键值存储中,是将字符串键关联到字符串值,但是在Redis中,这些值不仅限于简单的字符串,还可以支持更复杂的数 ...

  6. nginx 负载均衡的配置

    首先搭建好三台nginx,我是用VM搭建的 nginx搭建,https://www.cnblogs.com/liubaoqing/p/10507962.html 这里的三台nginx ,ip分别是 1 ...

  7. 初级程序员如何一分钟?解决一个BUG

    博主说明 -- 重要.重要.重要的事情说三遍 写这篇文章是主要锻炼写博客的能力以及记录自己的成长经历,要是写的不对欢迎大佬评论指正,同时希望对大家有所帮助.然后我写博客尽量简洁+图片+宏观的方式,便于 ...

  8. Spring Boot2 系列教程 (十三) | 整合 MyBatis (XML 版)

    前言 如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,之前介绍过了 SpringBoot 整合MyBatis 注解版的使用,上一篇介绍过 MyBatis ...

  9. dataset中shuffle()、repeat()、batch()用法

    import numpy as npimport tensorflow as tfnp.random.seed(0)x = np.random.sample((11,2))# make a datas ...

  10. restframewor 版本(version)

    1.路由 a.一级路由 from django.contrib import admin from django.urls import path, include from api import u ...