﻿# V7021\. The postfix increment or decrement has no effect because the variable is overwritten\.

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

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

```cpp
let value = 0;
....
value = value++;  // <=
....
```

После присваивания переменная `value` останется равна нулю\. Это связано с тем, что постфиксные инкремент и декремент возвращают значение переменной до её изменения\. Порядок операций в данном выражении будет следующим:

1. Чтение переменной `value`;
1. Увеличение значения переменной `value` на единицу; 
1. Присвоение переменной `value` значения, полученного на шаге 1\. 

Таким образом, результат выполнения постфиксных инкремента или декремента теряется при перезаписи в ту же переменную\. 

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

```cpp
let value = 0;
let savedValue = ....; 
....
savedValue = value++; 
....
```

Либо же программист написал присваивание по ошибке, и на самом деле оно тут не нужно:

```cpp
let value = 0;
....
value++;
....
```