CXX.LOGICAL_OP.NON_BOOL_CONSTANT

逻辑运算符不应直接应用于常数。

如果将逻辑运算符直接应用于常数,此检查器就会报告缺陷。

漏洞与风险

在常数上执行逻辑运算符可能会导致意料之外的结果。

漏洞代码示例

复制
   bool func()
   {
     const bool var = false;
     const bool Constant1 = true;
     const bool Constant2 = false;
     return Constant1 || Constant2;  
   }

在以上示例中,第 6 行不符合要求,因为其将逻辑运算符应用于常数变量。Klocwork 在第 6 行报告 CXX.LOGICAL_OP.NON_BOOL_CONSTANT 缺陷,指出“逻辑运算符不应直接应用于常数。”

修正代码示例

复制
   bool func()
   {
     const bool var = false;
     const bool Constant1 = true;
     const bool Constant2 = false;
     return var == Constant1 || var == Constant2;  
   }

在修正代码示例中,Klocwork 不再于第 6 行报告 CXX.LOGICAL_OP.NON_BOOL_CONSTANT 缺陷。