The left operand in all assignment expressions must be a modifiable lvalue. The type of the expression is the type of the left operand. The value of the expression is the value of the left operand after the assignment has completed.
The result of an assignment expression is not an lvalue in C, but is an lvalue in C++.