If you use "unsigned char", nobody will have to look it up.
I head agrees with you, but I must confess to guiltily writing such
typedefs when I think no one will see them. I offer this in defense.
I think of things the affect a program's understandability (bad word but
readability is too superfical) as falling into three categories:
(a) There are superficial things like layout, brace and bracket placement,
naming conventions etc. and, yes, if main is declared correctly. These
form a sort of "constant" order complexity (O(1)) in understanding because
no matter how bad, once every single style you can think of has been
abused, that's it. It can't get any worse.
(b) Things like unusual patterns of #include, not using #include "guards",
chains of "shorthand" typedefs and so on. The effect of these on
understandability is, in theory, unbounded but it does not take much
intellectual effort to unravel. These are O(n) complexity issues.
(c) The Really Bad Ones. Pretty much all the hard problems that come from
poor memory management, illogical design, obscure control flow and so on
are much worse than anything that comes from (a) or (b). These can make
for exponential compexity in understanding.
There are exceptions, of couse. I think some typedefs help readability
(pointer to function types spring to mind) and bad macros can make things
unreadable faster than almost anything else, but because type (c) problems
are hard to discuss in general terms, types (a) and (b) get too much blame
for the harm they can cause.