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");
}
}