printf交替使用

今天附带printf一些替代实现。

转载请注明出处:http://blog.csdn.net/u010484477谢谢^_^

我们总是用printf做各种输出语句:

printf("%d",i); 
printf("%s",str); printf("I‘m xingyanhong\n");

今天偶然看到了这样一句话:

int nflag = printf("%d",i);

就认为非常纳闷,这么运行后,nflag又是什么值呢?于是我就实现了一下,得到了以下的:

发现nflag与i的值一样了。

这是整型的情况,其它类型又会如何呢?我又进行了实验:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQ4NDQ3Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

这下有意思了。nflag的数并没有像int型时一样和i相等而是等于8。细致观察我们能够发现,这个数字8正是i的全部位数+1(代表小数点)

那么字符串又会如何呢?

我们接着来:

这里nflag的值为9了,为什么呢

^_^最后总结一下:

数字 INT
printf 返回相应数字

数字 FLOAT
printf返回数字的位数+1(小数点)

字符串
CHAR* printf返回字符串的长度,相当于strlen

事实上还有其它种的类型,大家能够自己去试一试。这个知识点或许会有人嗤之以鼻,但我贴出来的想法,就是认为这个我并不知道的小知识,自己动手实现归纳出来还是有意义的,个人认为过程还是挺重要的。

最后送大家一句话:

每个你能够努力今天。他们是厚厚礼。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-01 07:25:39

printf交替使用的相关文章

C#实现可变数量参数,像printf那样

C语言的printf函数,参数的数量可以是 可变的.使用 va_start 和 va_end  实现. C++中,实现参数可变,可以用 overload.如果参数数量不是很多的话,可以一个参数实现一个函数,两个参数再实现一个函数,三个参数再实现一个函数... 或者使用C的方案. C#中,也可以用 overload.或者 params 关键字. 下述代码除了演示 params 实现变数量的参数,还演示了 这些参数的类型不必相同. 下述代码的输出是 1 2 one two aa one two aa

shell文本过滤编程(五):awk之printf

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 在大多数情况下 awk 的 print 语句可以完成任务,但有时我们还需要更多.在那些情况下,awk 提供了两个我们熟知的函数 printf() 和 sprintf().是的,如同其它许多 awk 部件一样,这些函数等同于相应的 C 语言函数.printf() 会将格式化字符串打印到 stdout,而 sprintf()函数返回根据printf格式说明指定的格式

printf 和sprintf

1. #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ char l_str1[ ]="你好 " char l_str2[ ]="吃饭了吗?" char l_str3[100={0}; sprintf(l_str3,"%s%s",l_str1, l_str2); system("pause"); } 2.

printf函数重定向

printf函数底层会调用fputc函数 /*重定向c库函数printf到USART1*/ int fputc(int ch, FILE *f) { /*发送一个字节数据USART1 */ USART_SendData(DEBUG_USART, (uint8_t) ch); /* 等待发送完毕 */ while (USART_GetFlagStatus(DEBUG_USART, USART_FLAG_TXE) == RESET); return (ch); }

printf()格式化输出详解

% - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少. ②-:有-表示左对齐输出,如省略表示右对齐输出. ③0:有0表示指定空位填0,如省略表示指定空位不填. ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数.N指精度.用于说明输出的实型数的小数位数.对数值型的来说,未指定n时,隐含的精度为n=6位. ⑤l或h:l对整型指long型,对实型指double型.h用于将整型的格式字符修正为short型. -------------

eclipse 中 scanf 先于printf 出现的问题

原文:http://blog.csdn.net/linux_wgl/article/details/7430561 在写一个C语言时,运行时发现scanf比printf先执行了,在网上找了一下资料,原来是输出缓冲区的问题.解决方法有两个,第一,设置缓冲区为空,即没有缓冲区:第二,每执行printf之后,强制缓冲区.具体方法如下: 在printf之前添加:setvbuf(stdout,NULL,_IONBF,0);设置缓冲区为空. 在每句printf之后添加:fflush(stdout); 测试代

Java SE学习之printf 日期转换符

本文是学习网络上的文章时的总结,感谢大家无私的分享. System.out.printf()方法能够对日期做处理输出. 相应列表 转换符 类型 举例 c 完整的日期和时间 Mon Feb 09 18:05:11 PST 2004 F ISO 8061日期 2004-02-09 D 美国格式的日期 02/09/2004 T 24小时时间 18:03:23 r 12小时时间 05:03:23 pm R 24小时时间没有秒 18:05 Y 4位数字的年(前面补0) 2004 y 年的后两位数字(前面补

printf()的返回值

#include <stdio.h> #include <stdlib.h> int main() {                  int i=43;                 printf( "%d\n",printf("%d" ,printf("%d",i)));                 system( "pause");                  return 0; }

c51 printf的用法

keil的官方网站关于printf的参考 http://www.keil.com/support/man/docs/c51/c51_printf.htm