二者的本质区别在表达能力的区别,++i 能做的事,i++ 不再话下,可 i++ 能做的事,++i 可来不了。而且,++i 其实等价于 i+=1,i++ 可找不到类似的等价。(然而,对于 C++ 的运算符重载 operator++ 来说,i++ 会产生不必要的中间变量)。
考虑如下的简单语句:
return i++;
i++ 的一条语句,两个操作的特性发挥得淋漓尽致,返回当前值的同时,再执行自加的动作,也即:
{
return i;
++i;
}
显然这种表达是有问题的
在 ++i 之前,程序已经 return 了
而:
return ++i;
仅能返回当前值+1,且可被替换为:
return i+=1;