_stdcall __cdcel和__fastcall三者的区别

weixin_36242112 2016-10-24 11:48:21
#pragma once
#include <stdio.h>

void show()
{
int i = 0;
printf("%d ","%d ","%d ",i,++i,i++);
}
int main()
{
show();
return 0;
}
在标题的三种模式下,都输出什么东东,怎么我在VC 2005的stdcall下输出的为4281916 感觉应该是2,2,0才对啊
...全文
419 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fefe82 2016-10-25
  • 打赏
  • 举报
回复
引用 楼主 weixin_36242112 的回复:
#pragma once #include <stdio.h> void show() { int i = 0; printf("%d %d %d ",i,++i,i++); } int main() { show(); return 0; } 在标题的三种模式下,都输出什么东东,怎么我在VC 2005的stdcall下输出的为4281916 感觉应该是2,2,0才对啊
这个一个未定义行为,不要讨论了。 =================================== 你问题里现象与你的标题没有任何关系。
paschen 2016-10-25
  • 打赏
  • 举报
回复
改成 printf("%d %d %d",i,++i,i++); 这三种调用约定对于你给的情况结果都一样 这三种约定只不过是规定参数入栈顺序,由谁清理,而printf的声明明确是cdecl,不会随你设置不同而改变 _Check_return_opt_ _CRTIMP int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...); 三种方法的具体不同可以去网上搜索
ipqtjmqj 2016-10-25
  • 打赏
  • 举报
回复
要连接字符串,不需要逗号
赵4老师 2016-10-25
  • 打赏
  • 举报
回复

33,311

社区成员

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

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