Ad una variabile può essere assegnato solo un tipo di valore adeguato al tipo con cui è stata dichiarata.

Se una variabile è stata dichiarata di tipo int, un programmatore non potrà assegnare a quella variabile un carattere alfanumerico, un decimale, ma solamente un valore intero.

int a = 2; // Variabile int
float b = 3.5; // Variabile float
int c = a+b; // ERRORE!

Quello che ho riportato sopra è un errore, se provo a compilare un codice del genere otterrò un warning (un "avvertimento del compilatore, che però non pregiudica la compilazione vera e propria) o, più spesso, un errore vero e proprio (la compilazione viene arrestata).
Non posso effettuare operazioni fra due tipi di variabili diversi fra loro (int questo caso, int e float): per farlo devo ricorrere alla conversione di cast