C ++ Область переменных оператора If - PullRequest
1 голос
/ 12 ноября 2019

У меня есть эта функция, которая при запуске дает неверный ответ из-за области действия переменной numer. Есть ли способ использовать только одну инструкцию возврата для этой функции. Я должен был отделить ответное заявление, которое дало мне правильный ответ (вы можете видеть с //).

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 ;
}

1 Ответ

2 голосов
/ 12 ноября 2019

Вы объявили три переменные с именем numer:

  1. Исходная переменная неинициализирована и используется в операторе возврата
  2. Одна втело if
  3. Тот, что в теле else

Решение состоит в том, чтобы удалить double из if и elseтела. Например,

numer = -b + sqrt(disc);
...