Value categories

Value categories

Each expression in C (an operator with its arguments, a function call, a constant, a variable name, etc) is characterized by two independent properties: a type and a value category.

Every expression belongs to one of three value categories: lvalue, non-lvalue object (rvalue), and function designator.

Lvalue expressions

Lvalue expression is any expression with object type other than the type void, which potentially designates an object (the