I have the same habits. One of the first things I do on a new compiler is go find the warning for assignments within conditions and turn it on. It produces errors which can be hard to find, and do not always come up in testing (since it effectively makes it always take one code path, and sometimes this is the far more common case anyway.)
I think pretty much every C compiler has that option, some issued a warning by default.
I like my braces to line up vertically as well, so the brace gets its own line indented a space from the prior line. I sometimes go without braces if it is going to be a long block of conditions I want on single lines and I cannot use a switch, but this is very rare.
I tend to make casts explicit and group everything myself, but do it inline (most of the time the type is the same anyway.)
assuming int is 16 bit and long is 32:
int a;
unsigned int b;
long int c;
c=((long int)a) * ((long int)b);
Or do you have a compiler which does not give the expected results there?