IMHO that should not be considered an error at all (I mean in the "C world"). I mean, it's legal even it's not logic. Who would have to know if an assignement has been done or not? In the other hand, who would have to do an assignement in an equality testing?
Why did they use two different symbols? I understand that there are historic considerations behinds, but I do not know them
Personally, I began programming with BASIC, and used the "=" sign both the operations, and I disagreed the way C interpretes those operands.