Sottolineavo semplicemente il fatto che quel casting non è opzionale, come poteva sembrare leggendo la tua risposta, ma è richiesto dal linguaggio C. I "molti" che lo omettono hanno torto (anche perché l'ottimizzatore spesso sfrutta i casi di undefined behavior, indipendentemente dal comportamento che ci si aspetta su una determinata architettura).