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 缺陷。