VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 996|回复: 1

[原创] printf函数的返回值

[复制链接]
54_avatar_middle
在线会员 发表于 2016-2-20 15:43:22 | 显示全部楼层 |阅读模式
先看下面一段程序:

#include <stdio.h>

int main()
{
int i = 123;
printf("%d\n",printf("%d",printf("%d",i)));
return 0;
}

printf函数里面又嵌入了printf函数,你认为此段程序会打印出什么?

程序的实际运行结果是:
printf函数的返回值

对于这个运行结果,你怎么看?
我们来一步步分解printf函数,看看为啥会输出这个结果。

程序中的print函数是这样写的:printf("%d\n",printf("%d",printf("%d",i)));
一共有三个printf函数,我们可以使用一些代号来简化这个printf函数,如下:
代号A: printf("%d",printf("%d",i));
代号B: printf("%d",i)

则程序代码可以简化为:printf("%d\n",A); 那么我们就先来求A。
而A,又可以简化为:printf("%d",B);那么我们就先来求B。

B是  printf("%d",i),打印出“123”,即在运行结果中,你最先看到的是123。printf函数的返回值是printf实际控制输出的字符数,那么打印的123 就是3个字符,因此printf("%d",i)返回的就是3,也就是B是3,那么,A就可以写为printf("%d",printf("%d",3));打印出3,即在运行结果中,你紧接着会看到3。而打印出的3是1个字符,因此A就是1,那么printf("%d\n",A); 实际上就是printf("%d\n",1); 打印出1,即在运行结果中,你最后看到的就是1.


如果想了解更多C语言的知识、源码等,也可访问我的个人技术博客 http://549063237.qzone.qq.com




上一篇:long double占用字节的问题
下一篇:C语言的指针、数据、结构体关系总结
26_avatar_middle
在线会员 发表于 2016-7-13 22:27:59 来自手机 | 显示全部楼层
我就笑笑不说话1468448552.58
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-20 02:18

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表