☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

&=、|=、^=、-=、/=、%= 左右子表达式不应相同

10.3.8 ID_illSelfCompoundAssignment
目录 › next › previous

当左右子表达式相同时,&=、|= 表达式不改变对象的值,^=、-=、/=、%= 表达式的结果总为 0 或 1。

示例(设 a 为变量或表达式):

a &= a;  // Non-compliant, no effect
a |= a;  // Non-compliant, no effect

如果目的是清零或置 1,也不应使用下列表达式:

a -= a;  // Non-compliant, tedious
a /= a;  // Non-compliant, low efficiency
a %= a;  // Non-compliant, low efficiency

对于高级语言来说,应直接将变量赋值为 0 或 1,而不是采用更繁琐甚至低效的方式。

参考

CWE-682
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.