C++ 为什么函数总是引用一个特定参数?

C++ 为什么函数总是引用一个特定参数?,c++,parameters,C++,Parameters,在以下代码中: int sum(int a=40, int b=20) { int result; result = a + b; return (result); } int main () { int a = 100; int b = 200; int result; result = sum(a, b); cout << "Total value is :" << result <<

在以下代码中:

int sum(int a=40, int b=20)
{
   int result;

   result = a + b;

   return (result);
}

int main ()
{

    int a = 100;
    int b = 200;
    int result;


    result = sum(a, b);
    cout << "Total value is :" << result << endl;


    result = sum(a);
    cout << "Total value is :" << result << endl;

    return 0;
}
为什么:

sum(a)
将第二块中的(整数a)添加到第一块中的(整数b)中


我不明白为什么在(求和(a))中使用第一个块中的(b)值,而忽略第一个块中的(a)值。

在您使用的函数
sum
中。这就是你打电话的原因

result = sum(a); // where a = 100 and the second parameter is ommited
在函数
sum
中,第一个参数是取调用方
a(=100)
的值,由于第二个参数不在调用方端,默认的
b(=20)
将用作
b
。因此,结果是

100 + 20
= 120
正如大卫·罗德里格斯(David Rodríguez)在第一条评论中所建议的那样,使用不同的变量名称(比如
sum(int x,int y)
)以避免歧义和更好的理解

int sum(int a=40, int b=20) {
    ...
}

如果未指定,则将参数
a
声明为
40
,将
b
声明为
20
。这是一个编译器服务,因此
sum(a)
变成
sum(a,20)
b
未指定)。与此类似,
sum()
变为
sum(40,20)
<在您的方法中,
sum
中的code>a和
b
是。

为了使其更短:

int sum(int a=40, int b=20)
{
   return a + b;
}

int main ()
{
    int a = 100;
    int b = 200;

    cout << "Total value is :" << sum(a, b) << endl;
    cout << "Total value is :" << sum(a) << endl;

    return 0;
}
intsum(inta=40,intb=20)
{
返回a+b;
}
int main()
{
INTA=100;
int b=200;

CUT

你应该在C++中读一些关于缺省参数的内容。在这里,我建议你研究一下重载,因为它们有点关系。


在对sum()函数进行的第一次调用中,您为调用提供了两个参数,因此使用了您声明的变量a和b,因此得到100+200=300。在第二次调用tho时,您只提供了一个参数,因此第二次调用使用了默认参数值,即a=100,b获得默认值(20),那么当你编写一个函数,比如 returntype函数名(数据类型某些值),则称为默认参数

例如:如果你写一个函数,比如, 整数计算面积(整数长度=20,整数宽度=25)

然后,当您从main调用此函数时,您可以像这样将值传递给length和width

int main() {
  int a=50;
  int b=60;
  calculate_area(a,b);
}
或者你可以这样称呼它

int main() {
    calculate_area();
}
看到区别,我们没有传递任何参数,但它仍然是对函数的有效调用,因为在这种情况下……将考虑您提到的长度和宽度的默认值,在这种情况下是20和25

关于代码中的变量“a”和“b”,看起来您对变量的名称感到困惑。Main()和Sum()是两个不同的函数。
sum的“a”与main的“a”无关。当你阅读变量如何存储在堆栈和all中时,你就会明白这一点。

Uhm…你应该得到一个入门教程,以及关于默认参数是什么以及它们如何工作的一些信息。我无法理解你关心的是什么,函数和“代码>主代码< /代码>中的名称是相同的吗?您可以将函数参数重命名为<代码> x< /代码>和<代码> y>代码>,看看它是否避免混淆?“为什么函数总是引用一个特定的参数?”“这是什么意思?”“参数的默认值”部分。@打开CSV在
main()
中使用的变量名与
sum()中的参数名完全无关。
看起来这是您混淆的原因。sum(a)表示sum(a,20),因为第二个参数在您不提供一个值时具有默认值。您可以在编辑器中对代码使用标记,选择区域并按Ctrl-K(或单击{}按钮)。
int main() {
    calculate_area();
}