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

The analyzer has detected a redundant comparison that could be a potential bug\.

Consider the following simple example:

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

This condition will be true if 'Aa\[42\] \=\= 10'\. The second part of the expression is pointless\. It means that one of the two scenarios takes place here:

1\) The expression can be simplified\. Fixed code:

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

2\) The expression is incorrect\. Fixed code:

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

Here is another example with a suspicious condition:

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

The condition will be true only when 'value \> 10'\. This will most likely mean an error, and the programmer must have actually expected 'value' to fall into the range \(3;10\): 

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

The following article discusses this type of issues in detail and offers a few tips on how to avoid them: "[Logical Expressions in C/C\+\+\. Mistakes Made by Professionals](https://pvs-studio.com/en/blog/posts/cpp/0390/)"\.