CXX.BITOP.BOOL_OPERAND

潜在的逻辑错误:布尔表达式不应直接用作位运算符参数。可改为考虑使用逻辑运算符。

如果布尔操作数和位运算符一起使用,此检查器就会报告缺陷。

漏洞代码示例

复制
   void func(bool var1, bool var2)
   {
     int var3 = var1 | var2;  
     int var4 = var1 & var2;  
   }

在以上示例中,第 3 行和第 4 行不符合要求,因为其将位运算符应用于布尔变量。Klocwork 在第 3 行和第 4 行报告 CXX.BITOP.BOOL_OPERAND 缺陷,指出“位运算符只能应用于常数。”

修正代码示例

复制
   void func(bool var1, bool var2)
   {
     int var3 = 1 | 2;  
     int var4 = 3 & 4;  
   }

在修正代码示例中,Klocwork 不再于第 3 行和第 4 行报告 CXX.BITOP.BOOL_OPERAND 缺陷。