Incohérence à la conversion de int en float
Salut,
J'ai le problème suivant en réalisant un jeu avec SDL et OpenGL :
Voici mon code (sans les fprintf qui m'ont permis de déceler le problème):
Code:
1 2 3 4 5 6 7
| int perx = perso->getCenterX();
int pery = perso->getCenterY();
Pas * pas = new Pas();
pas->x = (float)perx;
pas->y = (float)pery; |
Lorsque je regarde la valeur de perx et pery après initialisation, j'obtiens 192 et 192 mais lorsque je les transforme en float ils deviennent 0 et 1080573952, ce qui bien entendu fausse tout mon programme.
Je ne comprends pas d'où viennent ces valeurs aberrantes sinon que ma fonction getCenterX() ou Y est la suivante :
Code:
1 2 3 4
| int Sprite::getCenterX()
{
return int(_rect.x + (_clip.w/2));
} |
_rect et _clip étant des SDL_Rect dont les membres sont en Sint16... J'imagine que c'est là qu'a lieu le problème.
Comment puis-je convertir ces types sans aberrations ?