Unsigned comparison to zero¶
ID: cpp/unsigned-comparison-zero
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- maintainability
- readability
Query suites:
- cpp-security-and-quality.qls
Click to see the query in the CodeQL repository
This rule finds expressions of the form x >= 0
where x
is an unsigned value. This comparison is pointless as it will always yield 1
.
Recommendation¶
Check the expression to see whether a different semantics was intended.
Example¶
typedef long long LONGLONG;
int f(unsigned int u, LONGLONG l) {
if(u > 0 || l >=0) //correct: unsigned value is check for > 0
return 23;
return u >= 0; //wrong: unsigned values are always greater than or equal to 0
}