C is like the rocket sled of cars. So you say, well who wouldn't want a rocket sled? Fine, but have you ever tried to drive down Lakeshore Drive in one? Well, then.
Similarly, I am sure that to someone the idea of being able to set a value inside of a conditional expression made sense. After all, more power! Well, yes, but you're liable to run right over the Civic in front of you at the next stop light, and imagine what that is going to do to your insurance... When one thinks of all the man hours lost over this small little thing... It's enough to blow the mind. (And, yes, I know I am surely glossing over some of the subtleties here. But then, sometimes subtleties are just excuses, too, so maybe I am still right.)
if(c_is_lame = true) kill_c();
(Actually, just like a rocket car is good at setting land speed records, C is pretty good for systems programming, with a few quirks thrown in, just like every language. More my point is that we put up with it for too many things for too long. And as for C++ - well, its only excuse is that the people who like it like rocket cars. [or maybe 20 ton dump trucks...] Having said that, and having used some C# recently, sometimes you really miss the power. Especially when you know the only reason you can't do something is because the language designer said so.)