考察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 星云
********************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架