考察printf函数返回值
最近偶然间见了这样一道题:
1 #include<stdio.h>
2 int main()
3 {
4 int i=43;
5 printf("%d\n",printf("%d",printf("%d",i)));
6 return 0;
7 }
这个题感觉蛮怪的,不太常见!大家看看吧!
当然你在vc++6.0上一运行,你就能知道这个输出结果,但是你知道为什么吗?
请看:
以上程序输出结果为:
那么为什么是这个结果呢?大家请看下面解释:
*****************************************************************************************************
一、printf("%d\n",printf("%d",printf("%d",i) ) );
/*大家先看画线的这一部分,这一部分打印出来是:
这一步比较简单,没啥可说的,就是打印出来i的值43
**************************************************************************************************
二、printf("%d\n", printf("%d",printf("%d",i ) ) );
//这次画线部分打印出来是
这是因为
函数名 :printf函数原型:int printf (char * format,args,···);功能:按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备。返回值:输出字符的个数,若出错,则返回负数。说明:format可以是一个字符串,或字符数组的起始地址。
理解:
其实主要printf返回值是字符串个数,就行了。
第一部分画线的是i=43,是两个字符,
所以第二个画线的输出就是2(代表43是两个字符)。
所以输出来就是432
**********************************************************************************************
三、printf("%d\n",printf("%d",printf("%d",i)));
这一部分打印出来是
分析:第三部分画线的1(代表第二部分中的2是一个字符。)
*************************************************************************************************
现在再举几个例子,加强理解:
例题1:
输入i=987;
输出最终结果是98731
分析:
因为987是三个字符,3又是1个字符;
-------------------------------------------------------------------
例题2:
输入i=56479854987;
输出最终结果就是56479854987112;
因为56479854987是11个字符,11是两个字符;
********************************************************************************************
好了,讲到这里相信大家都明白了吧!
这道题其实主要考察printf函数返回值,题目不难,但是我们很少注意。
欢迎各位交流分享,讲解有不对之处,还望各位前辈指出。先在此谢谢啦!
*********************
交流即分享,分享才能进步!
不对之处,还请各位前辈多多指教。
by 星云
********************