仅当在需要修改前的旧值的表达式中使用后缀增量时,后缀增量才有意义。在无效值(该值在
for循环中)被丢弃的空上下文中,保存旧值没有任何意义。
换一种说法:
// makes sense because you need the old value to subscript the arraystack[top++] = x;// in a void context, the old value is discardedtop++;
特别是在C ++中,这两个运算符都可能被重载,并且由于需要返回旧值,后缀之一的实现效率很低-它通常涉及复制旧对象以符合后缀运算符的原始语义。 。
对于原始类型,任何合适的编译器都会在两种情况下产生相同的代码,但是从语言的语义角度来看,第二种更好。



