左值可以标记一个存储的位置,右值可以指定一个值。
L-value中的L指的是Location,表示可寻址。The "l" in lvalue can be though of as location
R-value中的R指的是Read,表示可读。The "r" in rvalue can be thought of as "read" value.
个人感觉,左值就是可以提供一个确切的可操作的地址,比如前两个赋值语句,左值都是正确的,因为它提供了一个确定的地址,
变量名其实是一个特殊的对地址的引用。第三条赋值语句错误,左值不正确,计算机计算a+24时会将结果存在某个地址,但是这对于我们是未知的,
正如一个普通的整型常量是不可以作为左值的。那是一个不合法的地址.
int a;
int * p ;
a = 29; //true
*p = 30 //true
( a + 24) = 10 ; //false