免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yuxh
打印 上一主题 下一主题

printf为什么会这样? [复制链接]

论坛徽章:
0
91 [报告]
发表于 2004-12-30 12:50 |只看该作者

printf为什么会这样?

原帖由 "aero" 发表:
我是说的参数计算顺序,又没说入栈顺序。yuxh的例子,明显是从左到右计算的参数。

话又说回来,的确一般的compiler都是从右至左入栈,但这个是标准规定的吗?我不清楚。

参数计算应该和入栈顺序一致。
这里入栈的两个指针是相同的,所以内容也是相同的,
从右到左顺序,先print2再print1,所以2被1覆盖了。

论坛徽章:
0
92 [报告]
发表于 2004-12-30 12:52 |只看该作者

printf为什么会这样?

用的是 assiss  的代码:

win/lcc4
example 1: 2 2
example 2: 2 2
example 3: 2 2

"d:\opt\lcc\lcc\test.exe"
Return code 0
Execution time 0.016 seconds
Press any key to continue...

论坛徽章:
0
93 [报告]
发表于 2004-12-30 13:05 |只看该作者

printf为什么会这样?

原帖由 "yuxh" 发表:

*(magic(1))的值是1,入栈的是1而不是a的地址,因而入栈的是2,1,结果就是1 2

第三个一样

为什么入栈的是值而不是地址呢???

论坛徽章:
0
94 [报告]
发表于 2004-12-30 13:06 |只看该作者

printf为什么会这样?

越发的糊涂了,郁闷啊

论坛徽章:
0
95 [报告]
发表于 2004-12-30 13:09 |只看该作者

printf为什么会这样?

to assiss,

mingw是什么? 编译器是不是有问题?
你那个程序改的更好了,就拿它做例子。

论坛徽章:
0
96 [报告]
发表于 2004-12-30 13:22 |只看该作者

printf为什么会这样?

我明白了,谢谢解答

论坛徽章:
0
97 [报告]
发表于 2004-12-30 13:32 |只看该作者

printf为什么会这样?

To AERO,

你怎么还认为计算从左到右,是说yuxh的这个程序例子吗?

char *Func(int n)
{
    static char s[20];

    sprintf(s, "number %d", n);

    return s;
}

main()
{
    printf("%s, %s\n", Func(1), Func(2));
}

结果是number 1, number 1?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
98 [报告]
发表于 2004-12-30 13:36 |只看该作者

printf为什么会这样?

原帖由 "思一克" 发表:

    sprintf(s, "number %d", n);

    return s;
}

main()
{
    printf("%s, %s\n", Func(1), Func(2));
}

结果是number 1, number 1?


呵呵,不好意思,一直在忙别的。上来看一眼就冒胡话了。还没来得及编辑,终于被逮到了。^_^。

论坛徽章:
0
99 [报告]
发表于 2004-12-30 13:46 |只看该作者

printf为什么会这样?

To aero,

你真逗。我逮到你了?
都到岁末了还这么忙?
预祝新年好

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
100 [报告]
发表于 2004-12-30 13:48 |只看该作者

printf为什么会这样?

呵呵,是啊,是啊。
其实,还是这个问题的理解不好。有点顽固。
刚才仔细看了一下汇编码,这回印象深刻了。
^_^,真的要多谢你呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP