Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

23.2.12 Väärä tyypin muunnos

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; 


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys