﻿# V519\. The 'x' variable is assigned values twice successively\. Perhaps this is a mistake\.

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

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

```cpp
A = GetA();
A = GetB();
```

То, что переменной 'A' два раза присваивается значение, может свидетельствовать о наличии ошибки\. Высока вероятность, что код должен выглядеть следующим образом:

```cpp
A = GetA();
B = GetB();
```

Если переменная между присваиваниями используется, то этот код считается анализатором корректным:

```cpp
A = 1;
A = A + 1;
A = Foo(A);
```

Рассмотрим, как подобная ошибка может выглядеть на практике\. Следующий код взят из реального приложения, где был реализован свой собственный класс CSize:

```cpp
class CSize : public SIZE
{
  ...
  CSize(POINT pt) { cx = pt.x;  cx = pt.y; }
```

Корректный вариант должен был выглядеть так:

```cpp
CSize(POINT pt) { cx = pt.x;  cy = pt.y; }
```

Рассмотрим еще один пример\. Вторая строка была написана для отладки или для того, чтобы посмотреть, как будет смотреться текст другого цвета\. И, видимо, потом вторую строку забыли удалить:

```cpp
m_clrSample = GetSysColor(COLOR_WINDOWTEXT);
m_clrSample = RGB(60,0,0);
```

Иногда анализатор выдает ложные предупреждения, когда запись в переменные используется для отладочных целей\. Пример подобного кода:

```cpp
status = Foo1();
status = Foo2();
```

В данной ситуации можно подавить ложные срабатывания, используя комментарий "//\-V519"\. Можно убрать из кода ничего не значащие присваивания\. И последнее\. Возможно этот код все же некорректен, и необходимо проверять значение переменной 'status'\.