19-其他赋值运算符
6.6 其他赋值运算符: += 、 -= 、 *= 、 /= 、 %=
C有许多赋值运算符。最基本、最常用的是=,它把右侧表达式的值赋给左侧的变量。其他赋值运算符都用于更新变量,其用法都是左侧是一个变量名,右侧是一个表达式。赋给变量的新值是根据右侧表达式的值调整后的值。确切的调整方案取决于具体的运算符。例如:
scores += 20 与 scores = scores + 20 相同
dimes -= 2 与 dimes = dimes - 2 相同
bunnies *= 2 与 bunnies = bunnies * 2 相同
time /= 2.73 与 time = time / 2.73 相同
reduce %= 3 与 reduce = reduce % 3 相同
上述所列的运算符右侧都使用了简单的数,还可以使用更复杂的表达式,例如:
x *= 3 * y + 12 与 x = x * (3 * y + 12) 相同
以上提到的赋值运算符与=的优先级相同,即比 + 或 * 优先级低。上面最后一个例子也反映了赋值运算符的优先级, 3 * y 先与 12 相加,再把计算结果与 x 相乘,最后再把乘积赋给 x 。
并非一定要使用这些组合形式的赋值运算符。但是,它们让代码更紧凑,而且与一般形式相比,组合形式的赋值运算符生成的机器代码更高效。当需要在 for 循环中塞进一些复杂的表达式时,这些组合的赋值运算符特别有用。