﻿# V6028\. Identical expression to the left and to the right of compound assignment\.

Анализатор обнаружил одинаковые подвыражения в левой и правой части составного оператора присваивания \(compound assignment operator\)\. Возможно эта операция содержит ошибку, не имеет смысла, либо может быть упрощена\.

Рассмотрим пример\. Пусть у нас имеется выражение следующего вида:

```cpp
x += x + 5;
```

Возможно программист хотел просто прибавить к переменной 'x' значение 5\. Тогда корректный код может выглядеть так:

```cpp
x = x + 5;
```

Либо же программист хотел прибавить 5, но случайно добавил лишнюю переменную 'x' в выражение\. Тогда корректный код может выглядеть так:

```cpp
x += 5;
```

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

```cpp
x = x * 2 + 5;
```

Рассмотрим следующий пример:

```cpp
x += x;
```

Данная операция эквивалентна операции умножения на два\. Более понятное выражение будет иметь следующий вид:

```cpp
x *= 2;
```

Рассмотрим еще одно выражение: 

```cpp
y += top - y;
```

Мы пытаемся прибавить переменной 'y' разницу между переменной 'top' и переменной 'y'\. Давайте разложим данное выражение:

```cpp
y = y + top – y;
```

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

```cpp
y = top;
```