最近偶然间见了这样一道题: 
 #include<stdio.h>
int main()
{
int i=;
printf("%d\n",printf("%d",printf("%d",i)));
return ;
}

这个题感觉蛮怪的,不太常见!大家看看吧!

当然你在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函数返回值,题目不难,但是我们很少注意。
        欢迎各位交流分享,讲解有不对之处,还望各位前辈指出。先在此谢谢啦!
 

最新文章

  1. [ASE][Daily Scrum]12.05
  2. SQL Server 2005、2008 的 datetime 值范围(转)
  3. 【转载】Pyqt QSplitter分割窗口
  4. android selector详解
  5. JavaScript 札记(数据类型和变量、)
  6. this和$(this)
  7. 框架基础:ajax设计方案(二)---集成轮询技术
  8. Servlet--HttpServletResponse的2个操作流的方法
  9. git从远程分支clone项目到本地,切换分支命令,其他常用命令
  10. Linux限制普通用户只能使用某命令
  11. js全选 反选
  12. spring Boot 上传文件,10天后,不能上传的bug
  13. (纪录片)现代生活的秘密规则:算法 The Secret Rules of Modern Living: Algorithms
  14. codeforces 586B/C
  15. Buffer和cahce的区别
  16. ASCII码、ISO8859-1、Unicode、GBK和UTF-8 的区别
  17. 《Effective Java》读书笔记四(泛型)
  18. python2用pip进行安装时报错Fatal error in launcher: Unable to create process using &#39;&quot;&#39;
  19. Spring学习(九)-----Spring bean配置继承
  20. Android成长之路-实现简单动画

热门文章

  1. 蜗牛爱课 - iOS7、8模态半透明弹出框
  2. windows下如何使用ssh远程登录Linux
  3. VC com 通信实例
  4. MFC对话框中解决回车键、ESC键退出的方法
  5. 【转】commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar实现文件上传
  6. 获取当前url并指定url中的字符 效果
  7. easyui的datagrid删除一条记录后更新出问题
  8. java改变图片文件尺寸
  9. jQuery学习-事件之绑定事件(七)
  10. HCE:Host-based Card Emulation基于Android设备的卡片模拟器