比较运算不可作为另一个比较运算的直接子表达式
10.5.6 ID_successiveComparison
在 C/C++ 语言中,连续的比较运算是没有意义的,本规则是 ID_illBoolOperation 的特化。
示例:
bool foo(int a, int b, int c) {
return a >= b >= c; // Non-compliant, logic error
}
例中 a >= b 的结果为 bool 型,bool 型数据是没有大小概念的,这个结果再与 c 比较大小是没有意义的。
例外:
a > b == true // Compliant, but odd
a != b != true // Compliant, but odd
(a > b) == (c > d) // Compliant, but complex
如果是判断两个 bool 表达式是否相等,可不受本规则约束,但这种复杂的形式并不值得提倡。