Typeof returns a type, and is evaluated at compile time.
The whole statement means declare a variable tmp with the same type as c (usually).
It might declare a related or different type, since the type of c+1 can be different to c. (this is more likely in c++).