++i是左值,可以直接对++i赋值,例如++i=3。
i++是右值,不能直接对i++赋值,例如i++=3会报错。
++i是指被加1之后的i,而i++是指i被加1的这一个操作表达式,虽然两者的结果都为1,但是++i的结果是直接返回的加1后的i,而i++返回的是一个新的变量,值为i+1。++i和i++的结果都为1,因为这两者本身在汇编语言中没有任何区别,但是涉及到赋值操作的时候,i++会比++i多一行指令。
i++;
++i; //在汇编语言中二者完全相同
a=++i,直接对a赋值++i
i=i+1;
return i;
a=i++,会申请一个临时空间存储运算之后的值,然后将这个临时值赋值给i。
汇编语言的逻辑大概类似于:
int x;
x=i+1;
i=x;
return i;
但是为什么不能作为左值呢,因为作为左值时没有申请临时空间这一步,左值需要直接就是内存地
址,不能有额外的相关操作