printf的用法进阶

Posted seafever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了printf的用法进阶相关的知识,希望对你有一定的参考价值。

今天来好好总结一下C语言中关于printf的常用用法

基础部分

printf("%d ", numInt);

技术图片

printf("%f ", numFloat);

技术图片

printf("%c ", aChar);

技术图片

printf("%s ", str);

技术图片

这些都过于简单,我就不细述了!


进阶部分


printf("%o ", num);

?在这个语句中,%o 表示的意思是以八进制输出 num 这个数!如下图:
技术图片

printf("%x ", num);

?同 %o 差不多,%x 表示以十六进制输出 num 这个数字!如下图:
技术图片
?怎么样,有了这两个用法是不是加强了八进制、十进制和十六进制之间的关系呢?
当然,我要介绍的还不止这些!
下面再说说占位方面的那些事吧!

printf("%10d ", numInt);

?在%d的中间加入一个数字 10 表示什么意思呢?先让我们看看这张图:
技术图片
?显然,我们的数字 16 似乎跑到后面去了呢!
哈哈~这就是这个数字 10 的作用!当我们在%和d之间加一个数,这个数就会被用来表示位宽(数字本身所占位宽也被计算在内)!
那我想在这个数的后面补位怎么办?简单,直接在10前面加上一个-即可!
printf("%-10d ", numInt);就表示在数字后面补位!
技术图片
?其实,这种用法更常见的是在小数类型中!下面让我们一起看看这个语句吧!

printf("%6.4f ", numFloat);

?这个语句是什么意思呢?先解说一下,这个6.4不是简单当作一个数来看待的哦!这个6表示保留5位有效数字(为什么是5?因为小数点也会占一位啊!), .4表示保留四位小数!如下图:
技术图片
?那要我输入的不是6,而是一个更大的数,大到超过了这个小数的整体位宽怎么办?不用怕!他会和%10d的效果一样,自动在这个数的前面补齐所需占位!如下图:
技术图片
?同样的,-号表示在这个数的后面补位!
?但要是 4 这个数过大怎么办?额~用 0 补齐呗...如下图:
技术图片
?不过还有个问题,要是我们的这个数的位宽在变化怎么办?不写.前面的数字呗~
?那要是我想写怎么办?

?既然你诚心诚意的发问了,那我就(啪!~つ﹏?)...

printf("%*.4f ", numInt, numFloat);

?这个语句就可以完美的解决这个问题!%*就表示占numInt位!如下图:
技术图片

printf的返回值

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

?更多的细节,大家可以自己上机自己测试哦!

以上是关于printf的用法进阶的主要内容,如果未能解决你的问题,请参考以下文章

C语言—指针进阶

C语言—指针进阶

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

Atom编辑器入门到精通 Atom使用进阶

[linux][c/c++]代码片段01

c_cpp 加载源图像固定用法(代码片段,不全)