V590. Consider inspecting this expression. The expression is excessive or contains a misprint
The analyzer detected a potential error: there is an excessive comparison in code. Let me explain this by a simple example:
if (Aa == 10 && Aa != 3)
The condition will hold if 'Aa == 10'. The second part of the expression is meaningless. On studying the code, you may come to one of the two conclusions:
1) The expression can be simplified. This is the fixed code:
if (Aa == 10)
2) The expression has an error. This is the fixed code:
if (Aa == 10 && Bb != 3)
Here is an example of how this error may look in a real application:
int appliedSize, appliedSign; ... if(appliedSize == 'b' && appliedSize != 's' && ...) ...
The expression has a misprint which is the reason why the appliedSize variable is used twice while appliedSign is not used at all. This is the fixed code:
int appliedSize, appliedSign; ... if(appliedSize == 'b' && appliedSign != 's' && ...) ...
Let's study another example from practice. We have no error here, but the expression is excessive, which might make the code less readable:
while (*pBuff == ' ' && *pBuff != '\0') pBuff++;
The " *pBuff != '\0' " check is meaningless. This is the shortened code:
while (*pBuff == ' ') pBuff++;