奇偶性检查错误¶
ID: cpp/incomplete-parity-check
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- reliability
- correctness
- types
Query suites:
- cpp-security-and-quality.qls
此规则会查找使用 x % 2 == 1
检查数字 x
是否为奇数的代码,此方法不适用于负数。将 %
应用于负数会产生负的结果。例如,(-5) % 2
等于 -1
,而不是 1
。因此,此检查会错误地将所有负数视为偶数。
建议¶
建议使用 x % 2 != 0
或 (x & 1) == 1
代替。
参考资料¶
MSDN 库:乘法运算符和模运算符.
维基百科:模运算 - 常见陷阱.