CodeQL documentation

Unsigned comparison to zero

ID: cpp/unsigned-comparison-zero
Kind: problem
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
}