C6316

Note

This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

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.

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