J'ai un truc hyper bizzare!
voila un exemple de prog :
unsigned short a=0;
int b=0;
float c;
long d=0;
// Main Function
void _main(void)
{
clrscr();
a=256;
b=320;
d=a-b; //donc d=-64
c=d*(0.568679); //-64*0.568679=-36,39
printf("%fn",c);
ngetchx();
}
donc en principe, c=-36,39
Mais le prog compilé fait 37232,55...
Quelqu'un sait pourquoi?
Je croyais qu'on pouvais mélanger les types dans les calculs, est-ce vrai?
ATARI ruuullllleeeezzzzz!!!!!!
niuob Le 15/03/2002 à 18:21 Ca ne change rien si tu fait un typecasting ?
(d=(long)(a-b))
Non, de cette façon ça ne devrait rien changer. Teste plutôt :
d= (short)a - b ou d= (long)a - b

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
ah oui, g pas passé aux typecasting...
Par contre, en changeant le type de d et en le mettant en short , ca marche...
trop bizzare...
ATARI ruuullllleeeezzzzz!!!!!!
C'est le fait que a est un unsigned short qui fait que la soustraction est calculée en mode non signé. Remplace:
d=a-b;
par:
d=(short)a-b;
[edit]Edité par Kevin Kofler le 15-03-2002 à 19:13:10[/edit]
je trouve que cast ou typecast le "fait plus" que transtypage...