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


C6240

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

C6240

Предупреждение C6240. (<выражение> & <ненулевая константа>) всегда равно результату <выражения>. Вы хотите использовать оператор "побитовое И"?

Данное предупреждение означает, что в правой части операции логического И, выполняемой в текстовом контексте, обнаружено ненулевое константное значение, отличное от единицы. Например, выражение (n && 3) сокращается до (!!n), что является логическим значением n.

Это предупреждение обычно указывает на попытку проверить битовую маску, в которой вместо логического И должен использоваться оператор побитового И (&). Предупреждение не создается, если ненулевая константа при вычислении дает значение 1, поскольку она используется для выбора ветвей кода.

Пример

Данное предупреждение создается в следующем коде:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if (n && INPUT_TYPE) 
   {
      puts("boolean value of !!n is true");
   }
   else
   {
      puts("boolean value of !!n is false");
   }
}

Для устранения этого предупреждения используйте оператор побитового И, как указано в следующем коде:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if ( (n & INPUT_TYPE) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmak false");
   }
}

См. также

Ссылки

Оператор & (Справочник по C#)