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


C6316

Обновлен: Ноябрь 2007

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