C ++中的左值和右值是什么?

左值(定位符值)表示一个对象,该对象在内存中占据一些可识别的位置(即具有地址)。

右值由排除定义。每个表达式都是左值或右值,因此,右值是不表示对象在内存中占据某些可识别位置的表达式。

对于例如,一个分配期望一个左值作为其左操作数,所以下面是有效的-

int i = 10;
But this is not:
int i;
10 = i;

这是因为 我 在内存中有一个地址,并且是一个左值。尽管10没有可识别的内存位置,因此是一个右值。因此,将 i的值赋给 10毫无意义。