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

The analyzer has detected an expression that can be reduced\. Such redundancy may be a sign of a logical error\.

Consider this example:

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

This expression is redundant\. If 'firstCond \=\= true', the condition will always be true regardless of what value the 'thirdCond' variable refers to; and if 'firstCond \=\= false', the condition will always be false – again, irrespective of the 'thirdCond' variable\. Thus, the expression 'firstCond \|\| \(firstCond && thirdCond\)' can be simplified:

```cpp
if (firstCond)
```

Perhaps the programmer made a mistake and wrote a wrong variable in the second subexpression\. Then the correct version of this code should look like this:

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