运算符不正确:基于 && 的互含运算始终为 0。 是否打算改用 ||?
备注
此警告指示在测试表达式中,将针对两个不同的常量测试变量。 结果取决于这两个条件都为 true,这是不可能的。 这些情况下的代码指示未正确捕获程序员的意图。 检查代码并更正问题非常重要。 否则,代码不会按照预期方式运行。
此问题通常由使用 &&
代替 ||
引起,但也可能由在应该使用 !=
的地方使用了 ==
而引起。
代码分析名称:MUTUALINCLUSIONOVERANDISFALSE
示例
以下代码将生成此警告:
void f(int x)
{
if ((x == 1) && (x == 2)) // warning
{
// code ...
}
}
若要更正此警告,请使用以下代码:
void f(int x)
{
if ((x == 1) || (x == 2))
{
// logic
}
/* or */
if ((x != 1) && (x != 2))
{
// code ...
}
}
如果表达式具有副作用,则分析工具不会发出警告。