前缀形式的++操作符出现在操作数的前面,操作数的值被增加,而表达式的值就是操作数增加后的值。后缀形式的++操作符出现在操作数的后面。操作数的值仍被增加,但表达式的值是操作数增加前的值。如果你考虑一下操作符的位置,这个规则很容易记住----在操作数之前的操作符在变量值被使用前增加它的值;在操作数之后的操作符在变量被使用之后才增加它的值。--操作符的工作原理与此相同。
这里有一些例子:
int a,b,c,d;
a = b=10;
c=++a; // c = 11, a =11
d=b++; // d =10,b = 11;
上面的注释描述了这些操作符的结果,但并不说明这些结果是如何获得的。抽象地说,前缀和后缀形式的增值操作符都复制了一份变量值的拷贝。用于周围表达式的值正是这份拷贝,前缀操作符在进行拷贝之前增加变量的值,后缀操作符在进行拷贝之后才增加变量的值,这些操作符的结果不是被它们所修改的变量,而是变量值的拷贝,认识这点非常重要,因为它能解释了你为什么不能象下面这样使用这些操作符:
++a = 10;
++a的结果是a值的拷贝,并不是变量本身,因为你无法向一个值进行赋值。