C6316
Предупреждение C6316: неверный оператор. Проверенное выражение является константой и отлично от нуля. Для определения установки разрядов используйте побитовое И.
Это предупреждение указывает на использование побитового ИЛИ (|), когда нужно было использовать побитовое И (&). Оператор побитового ИЛИ добавляет биты к результирующему выражению, тогда как оператор побитового И выбирает биты, общие в двух его операндах. Проверка флагов должна выполняться с помощью оператора побитового И или проверки на равенство.
Пример
Данное предупреждение создается в следующем коде:
#define INPUT_VALUE 2
void f( int Flags)
{
if (Flags | INPUT_VALUE) // warning
{
// code
}
}
Для устранения этого предупреждения используйте следующий код:
#define ALLOWED 1
#define INPUT_VALUE 2
void f( int Flags)
{
if ((Flags & INPUT_VALUE) == ALLOWED)
{
// code
}
}