n++
要开辟一个变量来保存n的值并返回,然后让n这个变量中的值加 1。
而++n
直接把1加到n这个变量的空间中去,并返回n这个空间中的值,没有开辟任何临时空间,性能更高。
n+=1
与n=n+1
在结果上是等价的。但使用复合赋值操作符+=
时,直接把1加到变量n的空间中去,左操作数只计算了一次加法;而使用长表达式 n=n+1
时,先要去n这个变量空间中去取值(要寻址),与1做一次加法计算,然后做一次赋值计算把结果存入到n这个空间中,这样左操作数n计算了两次。因此,n+=1
的性能更高。事实上,这也是复合赋值操作符存在一个基本原因。很多人刚开始八成会困惑,为什么会存在+=
,-=
,*=
这样的操作符,能提高程序的性能就是其中的一个原因。