Väärä tyypin muunnos saattaa myös aiheuttaa harmaita hiuksia:
#include <stdio.h> int main(void) { double d; int i; i = 5; d = i/2; :-( printf("d = %4.2lf\n",d); return 0; }
Edellinen ohjelma tulostaa d = 2.00 . Lausekkeen arvo kussakin vaiheessa on sama kuin sen laskemisessa siihen saakka tarvitun "monimutkaisimman" tyypin arvo. Mallissa ollaan kokoajan arvossa int. Siis myös jakolaskun tulos on int. Vika voidaan korjata kahdella tavalla:
d = i/2.0; d = ((double)i)/2;