☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

比较运算不可作为另一个比较运算的直接子表达式

10.5.6 ID_successiveComparison
目录 › next › previous

在 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 表达式是否相等,可不受本规则约束,但这种复杂的形式并不值得提倡。

相关

ID_illBoolOperation

参考

CWE-697 CWE-1024 CWE-1025
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.