C6285
警告 C6285:(<non-zero constant> || <non-zero constant>)的值始终为非零常数。 是否使用按位与运算符?
此警告意味着在测试上下文中出现的逻辑或运算中检测到两个大于 1 的常数值参数。 此表达式的值始终为 TRUE。
大于 1 的常数值意味着逻辑或的参数可能是位域。 考虑一个运算符是否会在按位是更合适的运算符。
示例
下面的代码生成此警告:
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f()
{
if (TESTED_VALUE || MASK)
{
puts("(TESTED_VALUE || MASK) True");
// code ...
}
else
{
puts("(TESTED_VALUE || MASK) False");
// code ...
}
}
若要更正此警告,请使用下面的代码:
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f(int flag)
{
if ((TESTED_VALUE & MASK)== flag)
{
puts("true");
// code ...
}
else
{
puts("false");
// code ...
}
}