CodeQL 文档

余数乘法

ID: java/multiplication-of-remainder
Kind: problem
Security severity: 
Severity: warning
Precision: medium
Tags:
   - maintainability
   - correctness
Query suites:
   - java-security-and-quality.qls

点击在 CodeQL 存储库中查看查询

将余数运算符 % 与乘法运算符一起使用可能无法得到你预期的结果,除非你使用括号。这是因为余数运算符与乘法运算符具有相同的优先级,并且这些运算符是左结合的。

建议

当你将余数运算符与乘法运算符一起使用时,请确保表达式按你的预期进行求值。如有必要,请添加括号。

示例

考虑一个以毫秒为单位的时间,表示为 t。要计算将时间转换为整数分钟后剩余的毫秒数,你可以编写 t % 60 * 1000。但是,这等于 (t % 60) * 1000,它给出了错误的结果。相反,表达式应为 t % (60 * 1000)

参考

  • J. Bloch 和 N. Gafter,Java 难题:陷阱、缺陷和边缘情况,谜题 35。Addison-Wesley,2005 年。

  • Java 教程:运算符

  • ©GitHub, Inc.
  • 条款
  • 隐私