# V578. Suspicious bitwise operation was detected. Consider inspecting it.

The analyzer detected a potential error in an expression handling bits. A part of the expression is meaningless or excessive. Usually such errors occur due to a misprint.

Consider this sample:

    if (up & (PARAMETER_DPDU | PARAMETER_DPDU | PARAMETER_NG))

The PARAMETER_DPDU constant is used twice here. In a correct code there must be two different constants: PARAMETER_DPDU and PARAMETER_DPDV. The letter 'U' resembles 'V' and that is why this misprint has occurred. This is the correct code:

    if (up & (PARAMETER_DPDU | PARAMETER_DPDV | PARAMETER_NG))

Another example. There is no error here but the code is excessive:

    if (((pfds[i].dwFlags & pPFD->dwFlags) & pPFD->dwFlags)
        != pPFD->dwFlags)

This is a shorter code:

    if ((pfds[i].dwFlags & pPFD->dwFlags) != pPFD->dwFlags)

This diagnostic also generates a warning when the label name begins with "case". A space character is most probably missing. For example, the label "case1:" should be written as "case 1:".

This diagnostic is classified as:

CWE-480

You can look at examples of errors detected by the V578 diagnostic.