Objects and lvalues
is a manipulatable region of storage.
is an expression referring to an object.
An obvious example of an lvalue
expression is an identifier.
There are operators that yield lvalues:
for example, if
is an expression of pointer type, then
E is an lvalue
expression referring to the object to which
An lvalue is
if it meets all criteria below:
In addition, if it is a structure or union,
it does not have any member
(including, recursively, any member of all
contained structures or unions)
with a const-qualified type.
it does not have array type
it does not have an incomplete type
it does not have a const-qualified type
The name ``lvalue'' comes from the assignment expression
E1 = E2
in which the left operand
an lvalue expression.
Identifiers, constants, string literals,
and parenthesized expressions are primary expressions.
An identifier is a primary expression,
provided it has been declared as designating
an object (which makes it an lvalue)
or a function (which makes it a function designator).
A constant is a primary expression; its type depends
on its form and value.
A string literal is a primary expression; it is an lvalue.
A parenthesized expression is a primary expression.
Its type and value are identical to those
of the un-parenthesized version.
It is an lvalue, a function designator,
or a void expression, according to the type
of the un-parenthesized expression.
Usual arithmetic conversions
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003