C6316

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at C6316.

warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set

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.

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  
  }  
}  

Show: