我不明白为什么神秘功能(y)等于40 当我在mysteryFunction(int,int = 2)时。有人可以向我解释一下吗?
最好,MM
#include <iostream>
using namespace std;
int mysteryFunction (int, int = 2);
int main()
{
int x = 10, y = 20;
cout << mysteryFunction (y);
}
int mysteryFunction (int x, int y)
{
return x * y;
}
答案 0 :(得分:3)
在mysteryFunction()
的声明中,第二个参数的默认值为2
,因此如果仅使用一个参数调用它,则第二个参数y
将为2
}。
因此,执行mysteryFunction(20)
与执行mysteryFunction(20, 2)
基本相同,根据您的代码应该返回20 * 2 = 40。
您可能会对传递给mysteryFunction()
作为其第一个参数的变量命名为y
这一事实感到困惑,与其定义中的第二个参数相同。然而,那些是完全不同的变量。事实上,你如何调用它们并不重要,只有参数/参数的位置很重要(如果你考虑函数重载,它们的类型也是如此)。
答案 1 :(得分:1)
他们默认假设y为2,因此当你填写int x时,它会自动接收(x,2)。
答案 2 :(得分:0)
在mysteryFunction
的声明中,您将第二个参数的默认值设为2。然后你只用一个参数调用它,所以默认用于第二个参数。所以y = 20和20 * 2 = 40.不要混淆变量名。 x
中的y
和main
与x
中的y
和mysteryFunction
无关