That's a logical place to draw the line, but I can't go along with it.
I can't say why except that is seems un-C-like to reject them. There's
no logic to my point of view -- it seems to be no more that a matter to
taste than anything else.
The question is, when does a statement become too complex? Programming
should be about reducing complexity, not adding to it. That's why
structured programming, user defined functions and so on was invented. I
myself prefer to focus my energy on algorithms rather than on
intricacies of the programming language.
Also, a complex expression with multiple side effects in a statement
does not make the algorithm any simpler - only shorter, but not simpler.
Moreover, it is only shorter notation-wise; if your read such a
statement aloud or write it in plain English it is not shorter. It just
makes for a longer and more convoluted sentence.
So, although writing convoluted code is a part of the C tradition, if
you can resist the temptation of saving a few keystrokes you will
probably save some maintenance time in the future. As we all know, C
does not enforce or advocate any particular coding style. On the
contrary, giving the programmer maximum freedom, and that includes the
freedom to write clear code, is the spirit of C.
August