请教一个参数默认值的问题

下面代码 result 结果为什么是220 ?


#include <iostream>
using namespace std;
 
int sum(int a, int b=20)
{
  int result; 
  result = a + b;  
  return (result);
}
 
int main ()
{
   // 局部变量声明
   int a = 100;
   int b = 200;
   int result;
 
   // 调用函数
   result = sum(b);
   cout << "Total value is :" << result << endl;
 
   return 0;
}

sum函数只传入了第一个参数

你sum函数配置了默认参数
所以有两种情况
当只传入一个变量时,sum(b)等于sum(b,20)
传入两个变量时,sum(a,b)就是sum(a,b)

sum 里面a被你函数赋值为200 b在函数上已经赋值为20 a+b自然等于220
简单说,你调用函数,是把b的值传给函数的参数的a