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