主题:求各位大侠解答
拾麦ing
[专家分:0] 发布于 2011-03-21 16:25:00
#include<stdio.h>
int f(int,int)
int main(void)
{
int number=10;
printf("%d,%d",f(n++,n++),f(++n,++n));
}
结果是:20,23
请帮忙分析分析不胜感激!!!
回复列表 (共6个回复)
沙发
hereforc [专家分:210] 发布于 2011-03-22 00:30:00
????你的f函数呢???
板凳
拾麦ing [专家分:0] 发布于 2011-03-23 12:55:00
[quote]????你的f函数呢???[/quote]
int f(int a,int b)
{
rerun a+b;
}
请帮帮忙呀?
3 楼
fragileeye [专家分:1990] 发布于 2011-03-23 13:22:00
25,23
printf中参数自右向左入栈,再结合n++(在f()中n++和++n相同的撒)、答案很明显了。
4 楼
AddSteel [专家分:0] 发布于 2011-03-24 12:24:00
貌似本人在电脑上运行的是24 23
5 楼
拾麦ing [专家分:0] 发布于 2011-03-24 12:52:00
这貌似是个很纠结的问题,跟编译器有关。如果在函数调用时,把实参值赋值给另外的变量结果和不赋值的情况又不一样。以后编程尽量别搞这种就行。还是谢谢各位的关注
6 楼
871696091 [专家分:30] 发布于 2011-03-26 13:19:00
GCC 编译器上是25,24
我来回复