Many people confuse the assignment operator (=) with the equality
operator (==), and this is a major source of bugs in C programs.
Because of early arithmetic training, people tend to think of =
as indicating equality, but in C it means "takes on the value produced
by", and it should always be read that way. By way of contrast,
== is an equality test operator and should always be read "is
tested for equality with". (See Comparisons and logic, for more
information on the == operator.)