我有此函数,由于变量numer
的范围,运行该函数时会给出错误的答案。有没有一种方法可以对此函数仅使用一个return语句。我不得不单独使用return语句,这给了我正确的答案(您可以在//
中看到)。
double calc_real_root(double a, double b, double c, double disc, double operation)
{
double denom=2*a;
double numer;
if (operation == ADD)
{
double numer = -b + sqrt(disc);
//return numer / denom ;
}
else
{
double numer = -b - sqrt(disc);
//return numer / denom ;
}
return numer / denom ;
}
答案 0 :(得分:2)
您已声明名为numer
的三个变量:
if
正文中的那个else
正文中的那个解决方案是从double
和if
主体中删除else
。例如,
numer = -b + sqrt(disc);
答案 1 :(得分:1)
问题在于您正在 shadwing 外部 变量numer
中使用同名的 inner 变量。>
您可以从内部范围分配变量numer
,而不用声明新变量。
double calc_real_root(double a, double b, double c, double disc, double operation)
{
double denom=2*a;
double numer;
if (operation == ADD)
{
// Assign to `numer` without declaring new variable.
numer = -b + sqrt(disc);
}
else
{
numer = -b - sqrt(disc);
}
return numer / denom ;
}