An lvalue is a value that is valid on the left-hand side of an assignment statement. The name 'lvalue' means just that: left-
value. I'll give a
quick-and-dirty C example:
let's say you have
int x;
then you can (assuming correct
scope), assign
x = 3;
because x is a regular
variable that you can
assign a value to. It's perfectly
okay to have x on the left side of that equal sign. The
compiler would fart at you if you tried something like
3 = x;
Because 3 is a numeric
constant, not an lvalue. It's pretty
obvious, I think. There are more subtle examples as well; as mentioned in a
== writeup a
pointer dereference results in an lvalue, so something like
int *x;
...
*x = 3;
Is valid for the compiler (but at
run-time only if x has been properly
initialized, otherwise you get a
segmentation fault at best, erratic behavior at worst.)