Casting

(int)  na frente de uma expressão aritmética é um molde (= cast), ou coerção.  Se x é uma variável do tipo double, a expressão

   (int) (x/2)

tem por valor a parte inteira de x/2.  Assim, se x vale 9 então o valor da expressão é 4 (e não 4.5).

Outro exemplo de molde:  se n é uma variável do tipo int então a expressão

   (double) n / 2

significa o mesmo que

   ((double) n) / 2

e transforma n em um número real antes de fazer a divisão por 2.  Se o valor de n for 9 o valor da expressão será 4.5 (e não 4).

Mais um exemplo: se h é uma variável do tipo int com valor −1 então o valor da expressão

   (unsigned) h

é UINT_MAX, ou seja, 4294967295.

Casting automático

Casting é automático em situações como

char *ptr;
ptr = malloc (1);

Portanto, não é necessário escrever

ptr = (char *) malloc (1);