左值和右值的概念
存储的层次结构
左值和右值的概念
按字面意思,通俗地说。以赋值符号 = 为界,= 左边的就是左值(lvalue),= 右边就是右值(rvalue)。
int a = 666;
左值 右值
int b = 888;
左值 右值
int c = a + b;
左值 右值 右值
-
lvalue - 代表一个在内存中占有确定位置的对象(换句话说就是有一个地址)。
-
rvalue - 通过排他性来定义,每个表达式不是lvalue就是rvalue。因此从上面的
lvalue的定义,rvalue是在不在内存中占有确定位置的表达式,而是存在在寄存器中。 -
所有的左值(无论是数组,函数或不完全类型)都可以转换成右值。