免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1928 | 回复: 2

【新贴】printf参数入栈顺序和编译器相关,还是都是从右至左? [复制链接]

论坛徽章:
0
发表于 2007-11-01 14:51 |显示全部楼层
上面帖子太多了,所以重新建立一个。
首先,我觉得这个顺序不太可能会变,原因如下:
如果顺序变化,那么可变参数和printf之类的函数原型必然不同,大家看到过这种原型么?printf(i,j,k,"%d...%d...%d").反正我是没有

前面版主给了一个链接说栈的增长方向会影响,其实并没有影响这个顺序。
那段代码在“栈向低地址生长”机器上和“栈向高地址生长”机器上的结果本来就应该相反,right?这里仔细想一下就能明白了。

所以,运行的结果相反并不是由于参数传递的顺序引起的,而是由于栈地址增长的方向所决定的。和参数传递没有关系。

只是发表我的看法,如果有不同意见,欢迎讨论

论坛徽章:
0
发表于 2007-11-01 14:56 |显示全部楼层
原帖由 bluesky_jxc 于 2007-11-1 14:51 发表
上面帖子太多了,所以重新建立一个。
首先,我觉得这个顺序不太可能会变,原因如下:
如果顺序变化,那么可变参数和printf之类的函数原型必然不同,大家看到过这种原型么?printf(i,j,k,"%d...%d...%d").反正 ...

当然,栈向高地址增长,入栈顺序从右向左, 和栈向低地址增长,入栈顺序从右向左,看到的现象正好是相反的。

论坛徽章:
0
发表于 2007-11-01 15:03 |显示全部楼层
恩,这个问题是由函数原型决定的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP