cs_Bidman
Messages postés8Date d'inscriptionjeudi 17 mars 2005StatutMembreDernière intervention 8 juillet 2005
-
8 juil. 2005 à 09:15
cs_Bidman
Messages postés8Date d'inscriptionjeudi 17 mars 2005StatutMembreDernière intervention 8 juillet 2005
-
8 juil. 2005 à 11:55
Bonjour !
C'est mon dernier jour de stage et il me reste juste un problème à régler. Apparement j'ai un probleme d'overflow. Voici le code (en simplifié)
CString tableau_donnes[18];
UINT nombre_cycle;
INT frequence;
Dans le tableau la frequence est bonne mais le nombre de cycle est mauvais. Au lieu d'avoir 367 500 j'ai 13750.
Sa doit surement être du fait que ce n'est pas %d qu'il faut mettre. Que faut-il mettre à la place?
Merci pour votre aide.
simtiers
Messages postés207Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention 2 novembre 2006 8 juil. 2005 à 11:37
Salut !
Je suis pas aussi sûr que toi Bruno :
%d est reservé à l'affichage en base décimale des entiers signés (INT)
%u est utilisé pour afficher en base 10 des entiers non signés (UINT)
Donc, moi j'écrirai plutot :CString tableau_donnes[18];
UINT nombre_cycle;
INT frequence;
tableau_donnes[0].Format("%d",frequence);
tableau_donnes[1].Format("%u",nombre_cycle);
D'ailleurs, le fait que le nombre affiché ne soit peut s'expliquer par
le fait qu'un entier non signé a un bit utilisable de plus qu'un entier
signé (celui qui donne le signe justement)
cs_Bidman
Messages postés8Date d'inscriptionjeudi 17 mars 2005StatutMembreDernière intervention 8 juillet 2005 8 juil. 2005 à 11:48
aucun problème de se côté là. Je viens de voir qu'il existe aussi un %u je vais essayer ceci. Le truc c'est que je ne pourrai pas voir le résultat avant Lundi . Pourtant j'ai fait un petit test et ça a l'air de marché mais quand je l'essaye dans le programme complet apparement ça ne marche pas. Peut-être que le problème viens d'ailleur mais c'est très étrange.