模块化功能背后的逻辑

时间:2017-02-15 04:42:17

标签: c++ int void modular

我不明白为什么神秘功能(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;
} 

3 个答案:

答案 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中的ymainx中的ymysteryFunction无关