﻿# V6104\. A pattern was detected: A \|\| \(A && \.\.\.\)\. The expression is excessive or contains a logical error\.

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

Рассмотрим пример подозрительного кода:

```cpp
boolean firstCond, secondCond, thirdCond;
....
if (firstCond || (firstCond && thirdCond))
....
```

Это выражение является избыточным\. В случае, если 'firstCond \=\= true', значение этого условия будет всегда истинным, независимо от значения 'thirdCond', если же 'firstCond \=\= false', то значение выражения будет всегда ложно, опять же, независимо от значения переменной 'thirdCond'\. Таким образом, выражение 'firstCond \|\| \(firstCond && thirdCond\)' можно упростить:

```cpp
if (firstCond)
```

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

```cpp
if (firstCond || (secondCond && thirdCond))
```