c语言中的lvalue和rvalue

Definition: C and C++ have the notion of lvalues and rvalues associated with variables and constants. The rvalue is the data value of the variable, that is, what information it contains. The "r" in rvalue can be thought of as "read" value. A variable also has an associated lvalue. The "l" in lvalue can be though of as location, meaning that a variable has a location that data or information can be put into. This is contrasted with a constant. A constant has some data value, that is an rvalue. But, it cannot be written to. It does not have an lvalue.

Another view of these terms is that objects with an rvalue, namely a variable or a constant can appear on the right hand side of a statement. They have some data value that can be manipulated. Only objects with an lvalue, such as variable, can appear on the left hand side of a statement. An object must be addressable to store a value.

Here are two examples.

int x;

x = 5; // This is fine, 5 is an rvalue, x can be an lvalue.

5 = x; // This is illegal. A literal constant such as 5 is not

// addressable. It cannot be a lvalue.

这段就说的很明白lvalue中的l其实指的表示该值的存储地址属性,即location属性,

而另外一个相对的词rvalue值中的r指的是读取该变量后所获得的值,即read的属性

 

你可能感兴趣的:(c语言中的lvalue和rvalue)