﻿# V2007\. This expression can be simplified\. One of the operands in the operation equals NN\. Probably it is a mistake\.

Данное диагностическое правило добавлено по просьбе пользователей\.

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

Подозрительные бинарные операции:

* '^', '\+', '\-', '<<', '\>\>', где один из операндов равен 0;
* '&', где один из операндов равен \-1;
* '\*', '/', '%', где один из операндов равен 1\.

Диагностическое правило V2007 помогает выполнять рефакторинг кода и иногда выявлять ошибки\.

Примеры конструкций, на которые анализатор выдаст данное диагностическое сообщение: 

```cpp
int X = 1 ^ 0;
int Y = 2 / X;
```

Приведённый код можно упростить\. Пример корректного кода:

```cpp
int X = 1;
int Y = 2;
```



Для сокращения количества ложных сообщений, есть несколько исключений\. Например, диагностическое сообщение V2007 не выдаётся в случае, если подозрительное выражение находится в макросе или является индексом массива\.