Operazioni con variabili di tipo diverso

Gentilissimi, sarei grato a chi volesse cortesemente spiegarmi come si lavora con variabili di tipo diverso...

Sia:
int a;
int b;
float c=3.1412

per assegnare ad a la parte intera di c, si deve scrivere:
a=c;
o è meglio scrivere:
a=(int)c; ?

Analogamente, per assegnare alla variabile b la parte intera di (c10) devo scrivere:
__b=c
10;__
oppure:
b= (int) (c*10)?
o ancora:
b= (int) (c*10.0)?