C6317

 

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

For the latest documentation on Visual Studio 2017, see C6317 on docs.microsoft.com. warning C6317: incorrect operator: logical-not (!) is not interchangeable with ones-complement (~)

This warning indicates that a logical-not (!) is being applied to a constant that is likely to be a bit-flag. The result of logical-not is Boolean; it is incorrect to apply the bitwise-and (&) operator to a Boolean value. Use the ones-complement (~) operator to flip flags.

The following code generates this warning:

#define FLAGS   0x4004  
  
void f(int i)  
{  
  if (i & !FLAGS) // warning  
  {   
    // code  
  }  
}  

To correct this warning, use the following code:

#define FLAGS   0x4004  
  
void f(int i)  
{  
  if (i & ~FLAGS)  
  {  
    // code  
  }  
}  

Bitwise AND Operator: &
Logical Negation Operator: !
One's Complement Operator: ~

Show: