description | title | ms.date | f1_keywords | helpviewer_keywords | ms.assetid | ||||
---|---|---|---|---|---|---|---|---|---|
Learn more about: Warning C6317 |
Warning C6317 |
11/04/2016 |
|
|
dc771bb8-f596-4514-af0f-4b39658af365 |
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's incorrect to apply the bitwise-and (&
) operator to a Boolean value. Use the ones-complement (~
) operator to flip flags.
Code analysis name: NOTNOTCOMPLEMENT
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
}
}