【问题标题】:Logic behind modular function模块化功能背后的逻辑
【发布时间】:2017-02-15 04:42:16
【问题描述】:

我不明白为什么神秘函数(y)会等于 40 当我理解神秘函数(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;
} 

【问题讨论】:

    标签: c++ int void modular


    【解决方案1】:

    mysteryFunction() 的声明中,第二个参数被分配了一个默认值2,所以如果你只用一个参数调用它,第二个参数y 将是2

    因此执行mysteryFunction(20) 与执行mysteryFunction(20, 2) 基本相同,根据您的代码应该返回20 * 2 = 40。

    您可能对传递给mysteryFunction() 作为其第一个参数的变量命名为y 的事实感到困惑,这与它定义中的第二个参数相同。但是,这些是完全不同的变量。实际上,如何调用它们并不重要,重要的是参数/参数的位置(如果考虑到函数重载,还有它们的类型)。

    【讨论】:

      【解决方案2】:

      他们会默认假设 y 为 2,因此当你填写 int x 时,它会自动接受 (x,2)。

      【讨论】:

        【解决方案3】:

        mysteryFunction 的声明中,您将默认值 2 赋予第二个参数。然后你只用 1 个参数调用它,以便将默认值用于第二个参数。所以 y=20 和 20 * 2 = 40。不要混淆变量名。 main中的xymysteryFunction中的xy无关

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多