previous next Up Title Contents Index

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; 


previous next Up Title Contents Index