CXX.LOGICAL_OP.INT_OPERAND
潜在的逻辑错误:整型表达式不应直接用作逻辑运算符操作数。相反,应使用布尔表达式。
如果将逻辑运算符直接应用于整型表达式,此检查器就会报告缺陷。
漏洞与风险
在整型表达式上执行逻辑运算符可能会导致意料之外的结果。
漏洞代码示例
复制
bool func(int var1, int var2)
{
const bool var = false;
const int Constant1 = true;
const int Constant2 = true;
return var == Constant1 || Constant2;
}
在以上示例中,第 6 行不符合要求,因为其将逻辑运算符应用于整型表达式。Klocwork 在第 6 行报告 CXX.LOGICAL_OP.INT_OPERAND 缺陷,指出“潜在的逻辑错误:整型表达式不应直接用作逻辑运算符操作数。相反,应使用布尔表达式。”
修正代码示例
复制
bool func(int var1, int var2)
{
const bool var = false;
const int Constant1 = true;
const int Constant2 = true;
return var == Constant1 || var == Constant2;
}
在修正代码示例中,Klocwork 不再于第 6 行报告 CXX.LOGICAL_OP.INT_OPERAND 缺陷。