高手请进!!!!!!!!

wan_ccgd 2009-07-12 02:55:44
有关printf嵌套的问题:
(1)
int a = 2;
printf("%d\n",printf("%d",a));
在VC下编译输出结果为:
21
(2)
int a = 2;
printf("%d\n",printf("The result is %d",a));
在VC下编译输出结果为
The result is 215。
(3)
int a = 2;
printf("%d\n",printf("The result is %d\n",a));
在VC下编译输出结果为
The result is 21
6

请各路高手指点迷津,为何输出上述结果?
在(2)中为何输出不是The result is 21
在(3)中为何输出不是The result is 2
1
...全文
62 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wan_ccgd 2009-07-13
  • 打赏
  • 举报
回复
谢谢各位的光临。。。。特别感谢wanggang999 ,Walf_ghoul 。结帖
Fleeboy 2009-07-12
  • 打赏
  • 举报
回复
唉,程序干嘛要写成这样呢...
wesleyluo 2009-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wanggang999 的回复:]
你应该知道printf()这个函数的返回值是什么意义,我赘述一下:
它的意义是,本次调用中,实际输出的字符的数量。

知道了这一点,你的问题就好解决了:


有关printf嵌套的问题:
(1)
int a = 2;
printf("%d\n",printf("%d",a));
在VC下编译输出结果为:
21
首先输出的是内层的 printf("%d",a),它输出了 a 的值,2,
然后外层的 printf() 输出了内层的返回值 1,
因为你没有…
[/Quote]
见解深入。
wan_ccgd 2009-07-12
  • 打赏
  • 举报
回复
谢谢ls
windsting 2009-07-12
  • 打赏
  • 举报
回复
你应该知道printf()这个函数的返回值是什么意义,我赘述一下:
它的意义是,本次调用中,实际输出的字符的数量。

知道了这一点,你的问题就好解决了:


有关printf嵌套的问题:
(1)
int a = 2;
printf("%d\n",printf("%d",a));
在VC下编译输出结果为:
21
首先输出的是内层的 printf("%d",a),它输出了 a 的值,2,
然后外层的 printf() 输出了内层的返回值 1,
因为你没有把它们断开,就得到了现在的结果,它不是二十一,而是一个2和一个1.


(2)
int a = 2;
printf("%d\n",printf("The result is %d",a));
在VC下编译输出结果为
The result is 215。
这个还用说么?2怎么来的知道了吧,15...你数数双引号中应该输出的字符是多少个。

(3)
int a = 2;
printf("%d\n",printf("The result is %d\n",a));
在VC下编译输出结果为
The result is 21
6
这个我跟你运行的结果不同,我的结果是:
The result is 2
16
至于你的结果怎么来的,我就不清楚了,至少根据我的解释,我的结果是很合理的。
Walf_ghoul 2009-07-12
  • 打赏
  • 举报
回复
printf()的返回值是打印的字符数,如果发生错误则返回一个负值.
wan_ccgd 2009-07-12
  • 打赏
  • 举报
回复
不好意思,写错了,(3)输出结果是:
The result is 2
16
Walf_ghoul 2009-07-12
  • 打赏
  • 举报
回复
运行了下(vc6)lz的第三个应该是:
2
16
Walf_ghoul 2009-07-12
  • 打赏
  • 举报
回复
有关printf嵌套的问题:
(1)
int a = 2;
printf("%d\n",printf("%d",a));
在VC下编译输出结果为:
21
..............................
先执行printf("%d",a)打印出2,它的返回值是打印的数目,返回1,然后执行外层的打印输出1,所以就是21了
(2)
int a = 2;
printf("%d\n",printf("The result is %d",a));
在VC下编译输出结果为
The result is 215。
...........................................
如(1),先打印2,返回15,打印15.
(3)
int a = 2;
printf("%d\n",printf("The result is %d\n",a));
在VC下编译输出结果为
The result is 21
6
.................................
多了个\n所以后面是16 ,但感觉应该是2 然后换行16,这个想想看。。。

请各路高手指点迷津,为何输出上述结果?
在(2)中为何输出不是The result is 21
在(3)中为何输出不是The result is 2
1
wan_ccgd 2009-07-12
  • 打赏
  • 举报
回复
sf
程序介绍: ◎前言:这是应一个MM的要求,搞了一个类似于知识库的系统,为了方便她快速搜索到需要的文章和问题答案,因此就做成了现在这样的搜索为主的cms,里面存放了大约3000篇以上的知识量,涉及到3大类10几个层面,涵盖了衣食住行、生活娱乐、电脑知识、动植物等,甚至是三国演义和西游记全篇,这个文件这么大,就是因为数据库内容太多了!不过这样大家一下下来就能用了! ◎特点:系统用了智能拆分关键字查询和分类别查询,主要就用到3个文件,包括一个错误提示页!后台可要可不要,自己掂量掂量看看是否需要就是! ◎设计:界面比较漂亮,完全是down 别人的,因为过年了,设计师都忙着回家,没空帮我,不过的确很不错,希望你会和我一样喜欢!logo和head 都留空,你可以自己进images修改它,想取什么名称就取什么名称, ◎安全:因为我也要回家过年,而且这本身就只针对MM个人电脑使用,本人没怎么认真对待,(惭愧~~~)但对于普通的菜鸟,应该是没问题的,如果你是入侵高手,建议自己在检测和修缮下,如果可以,到我们的论坛发表下! ◎其他:后台可以设置这个站点的名称和网站开关,也可以屏蔽指定的IP访问,由于我是拷贝CMS的config,因为没有删除其他的内容,(再次惭愧~~,)貌似没什么影响!如果你需要本地测试,建议把数据库备份,然后删除2500篇内容,不然会影响你测试速度,尤其是服务器配置不好的同志! ◎最后:本程序是小治技术社区的坏孩子作品,感谢社区的编程高手对本人给与技术上的指点!发布此版本旨在与众网友交流学习,整理过程中较为仓促,难免有疏漏,请大家提出指正。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧