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