Travailler avec des grands entiers - C - Programmation
Marsh Posté le 24-04-2008 à 10:38:26
La struct timeval contient des long, donc l'interval assuré va de -2 147 483 648 à 2 147 483 647.
En faisant long * 1000000 tu continues à bosser avec des long. Si tu veux bosser avec des long long, tu dois faire (long long)(tv.tv_sec) *1000000.
Exemple :
Code :
|
$ a.out |
Marsh Posté le 24-04-2008 à 11:02:07
Ah merci ça marche
Marsh Posté le 24-04-2008 à 10:18:33
Bonjour,
J'suis un peu léger en C mais je doit coder un truc qui travail avec le nombre de millisecondes depuis 1970. Et là c'est le drame, je m'arrache les cheveux ...
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // Pas necessaire ?
/*
*
*/
int main(int argc, char** argv)
{
struct timeval tv;
printf( "Test 1 : %d\n" , 15 );
gettimeofday(&tv, NULL);
printf("Ce que je voudrais : %010ld%06ld\n", tv.tv_sec, tv.tv_usec);
printf("Ce que j'ai : %lld\n", (tv.tv_sec*1000000) + tv.tv_usec);
unsigned long long test = (tv.tv_sec*1000000) + tv.tv_usec ;
printf("?? : %lld \n", test );
return (EXIT_SUCCESS);
}
Test 1 : 15
Ce que je voudrais : 1209024917211179
Ce que j'ai : 907007111923755
?? : 213321771
Ca délire totalement, ça me donne des chiffre aléatoire. Je pensais que c'était des débordements de limites mais finalement non ?
Quelqu'un peut-ile me dire ce qui cloche ?
La "struct" n'est pê pas la pour rien mais j'aurai besoin d'ajouter des milisecondes dans une boucle et je ne sais pas comment gerer simplement le changement de secondes
---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry