6.6 更多赋值运算符:+=、-=、*=、/=和%=

C有多个赋值运算符。最基本的一个当然是=,它简单地把其右边表达式的值赋给其左边的变量。其他赋值运算符对变量进行更新,每个这样的赋值运算符在使用时都是左边为变量名,右边为一个表达式。变量被赋予一个新的值,这个新值是它原来的值根据右边表达式的值进行调整得到的。确切的调整方式要依赖于运算符,例如:

 

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

 

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)

我们讨论的这些赋值运算符具有与=同样低的优先级,也就是说低于+或*的优先级。这种低优先级在上一个例子中得到反映,在与x进行相乘之前把12加到了3*y上。

C并不要求您使用这些形式。但是它们更加简洁,与更长的形式相比可能会产生效率更高的机器代码。当您想在一个for循环语句中塞进一些复杂的东西时,这些复合赋值运算符就特别有用了。