﻿# V6057\. Consider inspecting this expression\. The expression is excessive or contains a misprint\.

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

Поясним на простом примере:

```cpp
if (arr[42] == 10 && arr[42] != 3)
```

Условие будет выполнено в том случае, если 'Aa\[42\] \=\= 10'\. Вторая часть выражения бессмысленна\. Проанализировав код, можно прийти к одному из двух выводов:

1\) Выражение можно упросить\. Исправленный код:

```cpp
if (arr[42] == 10)
```

2\) Выражение содержит ошибку\. Исправленный код:

```cpp
if (arr[42] == 10 && arr[43] != 3)
```

Рассмотрим еще пример с условием, которое вызывает подозрение:

```cpp
if ((3 < value) && (value > 10))
```

Условие выполнится только тогда, когда 'value \> 10'\. Скорее всего это будет означать ошибку, и подразумевалось, что 'value' примет значение в интервале \(3;10\): 

```cpp
if ((3 < value) && (value < 10))
```

Статья, в которой рассмотрены подобные ситуации и даны советы, как избежать таких ошибок: "[Логические выражения в C/C\+\+\. Как ошибаются профессионалы](https://pvs-studio.ru/ru/blog/posts/cpp/0390/)"\.