今天在CSDN上看到一个关于左值和右值讨论贴,顺便说下自己的理解
左值:必须要有明确的名字来代表这个值;
右值:如果没有明确的名字来代表这个值,那么这个就是只能是右值;
举例:
int a=1;
a,a=2,++a都可以是左值;
而
1,a++就不能作为左值,只能是右值;
关于a++,++a:
a++:
是先取a的一个副本,然后将a加1,再将之前的副本返回,因此a++返回的数值并没有一个明确的名字来代表,所以不能作为左值;
++a:
是对a加1,然后将加1后的a返回,很明显有一个明确的名字a,所以可以作为左值;