两个或两个以上参数的函数,参数的执行顺序到底是从左向右还是从右向左?

netxuning 2008-09-18 10:53:08

int
i_fac (int n, int acc)
{
printf ("n:%d# acc:%d\n", n, acc);
return acc == 1 ? n : i_fac (n * acc, acc - 1); //第二个参数要是改为--acc居然会影响到第一个参数的结果
}

int
fac (int n)
{
return i_fac (1, n);
}

int
main ()
{
printf ("%d...\n", fac (4));
}


求阶乘的尾递归函数,i_fac()的第二个参数如果为acc - 1,打印结果:
n:1# acc:4
n:4# acc:3
n:12# acc:2
n:24# acc:1
24...
如果改成--acc,则为:
n:1# acc:4
n:3# acc:3
n:6# acc:2
n:6# acc:1
6...
是错误的
...全文
188 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
allenpettle 2008-09-18
  • 打赏
  • 举报
回复
函数传参的话一般是从右到左的。
hmsuccess 2008-09-18
  • 打赏
  • 举报
回复
要看编译器对于参数计算的顺序
yayafu 2008-09-18
  • 打赏
  • 举报
回复
看调用约定,一般是从右到左
mifeixq 2008-09-18
  • 打赏
  • 举报
回复
没准儿……

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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