参考:https://blog.youkuaiyun.com/xuwqiang1994/article/details/79924310
左值和右值有下述3个区别,一脉相承。规定不是死的,还是要灵活理解。
左值:占据内存空间,可以获得地址。例如变量
右值:CPU的缓冲区、寄存器上的,无法获得地址。例如临时变量或中间计算结果
Intvec v1 = Intvec(10)
其中v1是变量,是左值;Intvec(10)是临时变量是右值
string s;
s + “tail”
其中s是变量,是左值;s + “tail”是中间计算结果是右值。
左值:可以作为右值
右值:不能作为左值。
左值:可以被修改。因为有地址。
右值:不可以被修改。因为没有地址。
又因为有const的存在,C标准增加“可以修改的左值”。
C语言的规定:
左值:= 左边的值
右值:= 右边的值