这是我的代码:
#include <stdio.h>
int mul(int,int);
int main()
{
int sum,m,n;
scanf("%d%d",&m,&n);
sum=mul(10,mul(m,n));
printf("%d",sum);
}
int mul(int x,int y)
{
int sum;
sum=x+y;
return(sum);
}
输入
10
5
输出
25
有人可以告诉我为什么我得到25作为输出?这个函数被调用了2次吗? 一个在参数和其他时间在总和期间?
答案 0 :(得分:3)
这很简单:
sum=mul(10,mul(m,n));
您正在调用mul()
,其中10为第一个参数,mul(m, n)
的返回值为第二个参数。
m
和n
分别为10和5,因此mul(10, 5)
返回15.然后main
函数中的语句将对此进行求值:
sum = mul(10, 15);
这是25。
TL; DR: 是的,mul()
被调用两次。以m
和n
作为参数。第二次使用m
和n
之和,添加10
使用调试器,或者甚至查看编译器生成的汇编器输出会告诉你,mul
有2次连续调用。
是的,正如其他人正确指出的那样:阅读帮助部分(特别是how to ask)将是一个好主意。它解释了您希望自己进行合理的调试/诊断步骤。只有这样才能解决问题,你应该在这里发一个问题:
解释你是如何遇到你想要解决的问题,以及任何阻碍你自己解决问题的困难。
你只是声明,给定输入X,你得到输出Y,你不知道为什么。