C中的左值和右值

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

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

例如,一个分配期望一个左值作为其左操作数,因此以下内容有效:

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

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