abstraction:
Most compilers will warn about assignments as the top-level operation inside a while or if control expression. To the compiler it looks like you're writing while (x = y) and it thinks maybe you meant while (x == y). To tell it you really want while (x = y), you can add extra parentheses while ((x = y)), or to make it even more explicit, while ((x = y) != 0)