Поделиться через


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