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