﻿# V7018\. The expression 'A \|\| \(A && B\)' is redundant and always evaluates to 'A'\.

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

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

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

Это выражение является избыточным\. В случае если `firstCond` имеет значение `true`, результат проверки этого условия будет всегда истинным независимо от значения `thirdCond`\. Если же `firstCond` имеет значение `false`, то значение выражения будет всегда ложно\.

Таким образом, выражение `firstCond || (firstCond && thirdCond)` можно упростить:

```cpp
if (firstCond)
```

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

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