Zeph Le 27/10/2002 à 02:43Edité par Boo le 27/10/2002 à 02:51 if(( tbl_char[i]-= tbl_char[j])<0)
Comparaison is always false due to limited range of data type...
> Ok
if((short)(tbl_char [i]-=tbl_char [j]) < 0)
Comparaison is always false due to limited range of data type...
> Hum... Déjà moins Ok...
if((short)((short)tbl_char [i]-=(short)tbl_char [j])<0)
Comparaison is always false due to limited range of data type...
> Heu... Je suis sensé faire quoi pour qu'il arrete de me balancer un warning ???

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
[i]if((signed char)(tbl_char -=tbl_char [j]) < 0)
Parce que la conversion préserve les valeurs si possible et que donc (short)(unsigned char)255 donne 255, alors que (signed char)(unsigned char)255 ou (short)(signed char)(unsigned char)255 donne -128.
Ah, ce que tu veux, c'est détecter un débordement lors de la soustraction... Bon, dans ce cas, tu ferais mieux de passer à l'assembleur, c'est tout bête en assembleur.
En C:
[i]short temp;
temp=(short)tbl_char[i]-(short)tbl_char[j];
tbl_char=temp;
if (temp<0)
Non, il est terminé. Je me suis arrêté au if parce que tes extraits (d'une ligne) se sont également arrêtés au if.
Ce que je voulais dire, c'est qu'en assembleur, tu aurais quelque chose du genre:
[i]sub.b tbl_char(%pc,%d1:w),tbl_char(%pc,%d0:w) |tbl_char-= tbl_char[j]
bcc ok |carry clear = pas de débordement
|code en cas de débordement de la soustraction
ok:
donc pas besoin de variable intermédiaire. Mais tu ne peux pas exprimer cela en C.
Non, ça tronque la valeur avant la comparaison.