Previous Table of Contents "New C Standard" commentary
721
An lvalue is an expression with an object type or an
incomplete type other than
722 if an lvalue does not designate an object when it is evaluated, the behavior is undefined.
723 When an object is said to have a particular type, the type is specified by the lvalue used to designate the object.
724 A modifiable lvalue is an lvalue that does not have array type, does not have an incomplete type, does not have a const-qualified type, and if it is a structure or union, does not have any member (including, recursively, any member or element of all contained aggregates or unions) with a const-qualified type.
725
Except when it is the operand of the
726 If the lvalue has qualified type, the value has the unqualified version of the type of the lvalue;
727 otherwise, the value has the type of the lvalue.
728 If the lvalue has an incomplete type and does not have array type, the behavior is undefined.
729
Except when it is the operand of the
730 If the array object has register storage class, the behavior is undefined.
731 A function designator is an expression that has function type.
732
Except when it is the operand of the
733
Forward references:
address and indirection operators (6.5.3.2), assignment operators
(6.5.16), common definitions
734
53) The name lvalue comes originally from the
assignment expression
735 It is perhaps better considered as representing an object locator value.
736 What is sometimes called rvalue is in this International Standard described as the value of an expression.
737 An obvious example of an lvalue is an identifier of an object.
738
As a further example, if
739
54) Because this conversion does not occur, the operand of the
Next
Created at: 2008-01-30 02:39:41
The text from WG14/N1256 is copyright © ISO