x++
1
2
3
4
5
|
{ int temp = x; x = x + 1; return temp; // 返回右值 } |
++x
1
2
3
4
|
{ x = x + 1; return &x; // 返回左值 } |
不难看出,x++返回的是临时变量temp, ++x返回x的引用,就是x。
临时变量temp无法寻址,自然也无法存入数据。
退一步讲,如果x++=5能够运行的话,其实执行的结果就是temp=5,而temp在本语句结束之后立即释放,因此该语句是毫无意义的。
同时,从上还能看出,前缀没有中间变量,执行效率更高。