左值和右值通俗点就是等号左边的值(表达式)和等号右边的值(表达式)。
左值,是代表一个内存地址值,并且通过这个内存地址,就可以对内存进行读并且写(主要是能写)操作;
右值,是代表一个常量或者是与运算操作符结合的表达式,简单点就是一个数据值。
例如:
int a;
int b;
a = 0;
b = 1;
b =a;
其中,a是左值和右值,b是左值。但是,如果说b = a +1,那么a+1是右值么?这个问题是肯定的,a+1必然是右值。那么反过来呢?a+1 = b中a+1是左值么?很显然这个问题的答案是否。在程序语言中这个是不成立的。
又例如:
b+=1;
那么此时的左值和右值分别是谁呢?又或者是没有呢?
此时,这里的b既可以是左值也可以是右值,所以此时的左值是b右值是b+1。
以上是根据个人的理解所写的博客,如有错误的地方请指教。