CWARN.NOEFFECT.UCMP.GE

无符号值的无效比较始终为 true

CWARN.NOEFFECT.UCMP.GE 检查器可标记宏外部的代码,其中,无符号值与 0 的比较始终为 true。

漏洞与风险

如果 a 为无符号值,a >= 0 和 0 <= a 的比较始终为 true。这些比较没有任何效果,因此可能无法达到设计意图。

漏洞代码示例

复制
  int foo(unsigned int a) {
    while (0 <= a)  
      a--;
    return 0;
  }

Klocwork 标记了第 2 行,其中 0 <= a 的比较始终为 true。