Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set
Remarks
This warning indicates the use of bitwise-or (|
) when bitwise-and (&
) should have been used. Bitwise-or adds bits to the resulting expression, whereas bitwise-and selects only those bits in common between its two operators. Tests for flags must be performed with bitwise-and or a test of equality.
Code analysis name: INAPPROPRIATEUSEOFBITOR
Example
The following code generates this warning:
#define INPUT_VALUE 2
void f( int Flags)
{
if (Flags | INPUT_VALUE) // warning
{
// code
}
}
To correct this warning, use the following code:
#define ALLOWED 1
#define INPUT_VALUE 2
void f( int Flags)
{
if ((Flags & INPUT_VALUE) == ALLOWED)
{
// code
}
}