You flagged "C" as your language of interest, but in C++ there is a new contextual meaning for "auto", where a variable's type (on the left of an equal sign) can be inferred from the expression (on the right of an equal sign). This is available in the latest "C++11" version of the language. For example, you can say
auto x = 5;
and the compiler will determine that 'x' is an int. This is not (yet?) a feature of the "C" language.
I think Sergey's note in Solution #1
(here)[
^] describes the details well.