i++是先返回表达式的值,这个表达式的值是i起始值的一份拷贝,比如int i = 3; i++的值就是3。然后再对i进行+1操作。
举一个例子:
比如int i = 3, j; j = i++;
结果:j = 3, i = 4
在进行j = i++运算时先返回i++这个表达式的值,也就是i起始值的一份拷贝,这个拷贝会存在一个临时的区域,当表达式返回后这个临时对象就会销毁,然后在进行i+1操作。
++i是先进行+1操作,然后返回i这个变量,比如int i = 3; ++i的值是4。
举一个例子:
int i = 3, j; j = ++i;
结果:j = 4, i = 4;
在进行j = ++i运算时先对i进行+1操作,这样i的值就变为了4,然后再返回i这个变量,i++返回的是一个临时对象,而++i返回的是一个变量,因此i++是不可以作为左值的,而++i却可以作为左值。
比如:
int i = 3;
++i = 10;//正确,因为++i返回的是一个变量
i++ = 10;//错误,因为i++返回的是一个临时对象