Originally posted by marc weber:
and that = is an assignment rather than the comparison operator ==.
Exactly. While you might think it is
testing whether or not x is false, it is assigning false to x, then evaluating only x.
While in this case it won't matter that much (x == false is false since x is true; x = false will assign false and then evaluate to false), there are cases where it will:
While comparison will return false, the assignment will cause it to return true, and therefore z will be increased.