printf("%s%s",str1,str2)//str2最后压入栈,为什么打印到Doc窗口上不是第一个字符串?

mirroatl265 2013-10-10 09:13:41
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...全文
182 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-11-07
  • 打赏
  • 举报
回复
C 缺省 -->cdcel 调用约定 ,右边的先入栈
「已注销」 2013-11-07
  • 打赏
  • 举报
回复
C++里边,函数参数的调用顺序是从右到左的吧
buyong 2013-10-31
  • 打赏
  • 举报
回复
就打印2个字符串在一起把。有什么问题。
lm_whales 2013-10-11
  • 打赏
  • 举报
回复
入栈顺序和函数调用约定有关 C 缺省 -->cdcle 调用约定 ,右边的先入栈 C++ 缺省 -->stdcall 调用约定, 也是右边的先入栈 不论C,C++ 像 printf,scanf 这样的 C式的不确定个数和类型的参数, 都是cdcle 调用约定,入栈顺序是右边的先入栈 pascal 缺省 pascal 调用约定 ,是左边的先入栈
lm_whales 2013-10-11
  • 打赏
  • 举报
回复
看汇编代码 printf("%s%s",str1,str2)// 可能是类似这样的代码 PUSH str2 Push str1 push fmt call _printf
mujiok2003 2013-10-10
  • 打赏
  • 举报
回复
入栈顺序和输出顺序没有关系。printf实现的时候,先输出声明在前参数。

printf("%d %d\n", 1, 2);// 1  2
printf("%d %d\n", 2, 1);// 2  1
赵4老师 2013-10-10
  • 打赏
  • 举报
回复
http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装 再参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\output.c
lin5161678 2013-10-10
  • 打赏
  • 举报
回复
HelloWorld 级别的问题 用点心想清楚了 再问好嘛
图灵狗 2013-10-10
  • 打赏
  • 举报
回复
这个问题问的很奇怪。
turing-complete 2013-10-10
  • 打赏
  • 举报
回复
最后压栈? 怎么看出来的?

65,206

社区成员

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

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