Sobre que numero usar...
Piensa en lo que te hace falta.
Si te falta guardar un valor para representar edad. La edad no hace falta coma por lo que no es un float, mas bien te puede servir un int.
Si vas a guardar un numero para hacer cálculos con el le tienes que guardar como int %i ya que no puedes sumar un int con un char ¿no?(En realidad si se puede pero depende si lo necesitas).
Los char están representados por números de la tabla asc2.
Aun que guardes una letra 'a' como char la puedes imprimir como si de un entero se tratara %d o %i, se te va mostrar como el numero que corresponde en la tabla.
lo mismo puedes hacer al contrario.
Si imprimes uno de esos números como char %c pues te va salir la letra correspondiente al numero.
Tambien puedes imprimir un float como int o un int como float, lo que pasa es que por ejemplo si imprimes un float como int no se te muestra lo que hay despues de la coma, y si lo haces al contrario pues después de la coma sale un 0 ya que no tendría valor real, (seria como un numero completo 10.0)
Las variables las usas según la necesidad y tipo de valor.
Algunos ejemplos serian:
unsigned short int anios = 23;
Si hago un
#define U_SHORT unsigned short int, U_SHORT es lo mismo que unsigned short int y puedo crear variables asi:
U_SHORT anios = 32; /*mas cómodo no?Esta var ocupa la mitad de un int*/
float euros = 100; /*Ocupa el doble que un int*/
char letra = 'c'; /*char ocupa bien poco por que una letra si no recuerdo mal se representa con un solo byte ya que son 255 valores solamente que contiene la tabla asc2*/
char cadena[100] = {"10 Euros en mi cumpleaños"} //eso es un conjunto de chars, cada char tiene 4 o mas bytes según el ordenador, si declaro cadena[100] 100x4 (el 4 puede variar).
http://zarza.usal.es/~fgarcia/doc/tuto2/II_2.htm
Pues como lo ves, usa el tipo para el dato que necesites pero de manera correcta ;)