int i = 0, j;
j = i++; //j = 1, i = 1: 前置版本得到递增之后的值
j = ++i; //j = 1, i = 2: 后置版本得到递增之前的值
这两种运算必须作用于左值运算对象(i是一个左值运算对象)。前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。
- 后置版本需要将原始值存储下来,以便返回这个未修改的内容。如果不需要修改之前的值,那么后置版本的操作就是一种浪费。
int i = 0, j;
j = i++; //j = 1, i = 1: 前置版本得到递增之后的值
j = ++i; //j = 1, i = 2: 后置版本得到递增之前的值
这两种运算必须作用于左值运算对象(i是一个左值运算对象)。前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。