﻿# V3198\. The variable is assigned the same value that it already holds\.

Анализатор обнаружил ситуацию, когда переменной присваивается значение, которое она уже имеет\.

Рассмотрим пример:

```cpp
public long GetFactorial(long it)
{
  long currentValue = 1;

  for (int i = 1; i <= it; i++)
  {
    currentValue = currentValue * currentValue;
  }

  return currentValue;
}
```

Метод 'GetFactorial' должен возвращать значение факториала, соответствующее параметру\. Однако этот метод всегда будет возвращать единицу\. Данная ситуация возникает из\-за того, что на каждой итерации цикла переменной 'currentValue' присваивается значение, которое она уже имеет\.

Для исправления нужно заменить один из множителей на 'i':

```cpp
for (int i = 1; i <= it; i++)
{
  currentValue = currentValue * i;
}
```

## Дополнительная настройка диагностики

Существует возможность игнорировать возвращаемые значения методов и свойств для данного диагностического правила\.** **Для этого нужно добавить в файл '[\.pvsconfig](https://pvs-studio.ru/ru/docs/manual/6630/)' следующую команду:

```cpp
//V_3198_IGNORE_RETURN_VALUE:NamespaseName.TypeName.MethodName
```

При использовании команды из примера, данное диагностическое правило не будет выдавать предупреждения, если переменной присваивается возвращаемое значение метода 'NamespaseName\.TypeName\.MethodName'\. 

Аналогичным образом можно размечать свойства\.