【求助】putchar+printf的输出成了逆序

jiaoxiaogu 2010-11-25 03:51:06
各位大侠,我在使用printf与putchar一起打印的时候,发现,如果putchar包含在printf里边,就会打印出逆序,例如:

#include <cstdlib>
#include <iostream>

int main()
{
printf("%c%c%c\n\n",putchar('a'),putchar('b'),putchar('c'));

system("PAUSE");
return EXIT_SUCCESS;
}

打印结果是:
cbaabc


后来我做了一个小小的改动:

#include <cstdlib>
#include <iostream>

int main()
{
printf("\nputchar+printf的输出效果:\n%c%c%c\n",putchar('a'),putchar('b'),putchar('c'));

system("PAUSE");
return EXIT_SUCCESS;
}

输出的结果是:
cba
putchar+printf的输出效果:
abc


于是我很奇怪,为什么putchar会先于printf打印,切打印的是逆序呢?
...全文
80 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaoxiaogu 2010-11-25
  • 打赏
  • 举报
回复
言之有理。。。多谢多谢。。。
赵4老师 2010-11-25
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)

printf的参数计算顺序通常是从右往左
昵称很不好取 2010-11-25
  • 打赏
  • 举报
回复
putchar不先执行哪来打印结果,至于输出的顺序是由printf函数的入栈顺序决定

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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