Objective-C
中有两种表达方式1。 RValue
The term rvalue refers to a data value that is stored at some address in memory
2。左值
Expressions that refer to a memory location is called "lvalue" expression. An lvalue may appear as
either the left-hand or right-hand side of an assignment
我没理解。有人可以向我解释一下吗?
答案 0 :(得分:1)
RValue是一个被评估的值,但在分配给这样的内存位置之前没有指定的内存地址存储。例如:
5 * 2
是一个评估为10
的表达式。此计算表达式仍未分配给内存地址(仅用于计算的临时表达式,但您无法直接引用它),如果未存储则将丢失。这是LValue的作用,它提供了一个存储评估表达式的内存位置:
int x;
x = 5 * 2;
此处x
指的是某个内存地址,现在可以将计算出的数字(10)存储在x
所指的位置(即分配给x
的内存空间中)赋值运算符。因此,在上面的示例中,x是LValue,表达式5 * 2
是RValue
答案 1 :(得分:0)
粗略地说,lvalue
是可以分配给的值。在C和Objective-C中,这些通常是变量和指针解引用。 rvalue
是无法分配的表达式的结果。
一些例子:
int i = 0;
int j = 1;
int *ptr = &i;
// "i" is a lvalue, "1" is a rvalue
i = 1;
// "*ptr" is a lvalue, "j + 1" is a rvalue
*ptr = j + 1;
// lvalues can be used on both sides of assignment
i = j;
// invalid, since "j + 1" is not a rvalue
(j + 1) = 2
有关详细信息,请参阅Wikipedia article和this article here。