through computing the lvalue of an expression in the points-to graph, we get all the modified memory locations. thus we can get all the expressions that may be modified in the called procedure.
该算法通过计算表达式在指向图中的左值,得到所有可能被修改的内存位置,从而计算出所有可能在被调用过程中被修改的表达式。
an rvalue is any constant, variable or expression that can produce a value, but an lvalue must be a distinct, named variable.
但左边的值必须是一个明确的、已 命名的变量。
the context in which an lvalue appears determines how it is used.
左值出现的上下文决定了左值是如何使用的。
distinguish between an lvalue and an rvalue; show examples of each.
区分左值和右值,并举例说明。
the lvalue and rvalue in the assignment statement is separated by a colon plus an equal sign ( := ).
任务声明中的 lvalue与rvalue由一个冒号加等号隔离开来( := )。
according to the c standard (6.5.3), properties associated with qualified types are meaningful only for lvalue expressions.
根据c标準 (6.5.3),与限定类型相关的属性只对左值表达式有意义。
instead of magic indexes, we get meaningful names (such as v:val.lval for each line「s lvalue and line.op for each line」s operator).
不使用神奇索引,我们将获得有意义的名称(例如,v:val.lval用于各行的lvalue,line.op用于各行的操作符)。
the lvalue and rvalue in the assignment statement is separated by a := (colon plus equal sign).
分配声明中的 lvalue和rvalue以 := (冒号加等号)被隔开。
the subroutines chapter covers new syntax (prototypes and attributes), plus the brand new lvalue attribute (as of 5.6.0).
子程序这章主要针对新的语法(原型和属性),以及左值属性(5.6.0)。
until now, special care had to be taken to allow modification of object attributes, for example. with lvalue subroutines, you can directly affect scalars returned by subroutines.
直到目前为止,修改对象属性时需要费一些特别的心思,例如使用左值子程序,你就可以直接操作子程序返回的标量。
an object is a named region of storage; an lvalue is an expression referring to an object.
这时候的左值可以解释为:对象是一个命名的存储区域,左值是对象引用的表达式。
an lvalue is an expression with an object type or an incomplete type other than void; if an lvalue does not designate an object when it is evaluated, the behavior is undefined.
不再限定左值必须引用一个对象,但是规定如果使用了一个没有引用对象的左值,其行为是未定义的。