奇偶性检查错误¶
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 库:乘法运算符和模运算符.
维基百科:模运算 - 常见陷阱.