&=、|=、^=、-=、/=、%= 左右子表达式不应相同
10.3.8 ID_illSelfCompoundAssignment
当左右子表达式相同时,&=、|= 表达式不改变对象的值,^=、-=、/=、%= 表达式的结果总为 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,而不是采用更繁琐甚至低效的方式。