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