Je vais à travers des exercices de programmation avancée dans Unix et a rencontré la question suivante:calendrier temps stocké comme un entier signé 32 bits - quand sera-t déborder
Si le temps de calendrier est stocké comme signé 32 -bit entier, en quelle année débordera-t-il?
entier positif signé = 2147483647
Dans le calcul suivant, je ne suis pas la comptabilité pour les années bissextiles:
((((2147483647/60sec) /60min)/24)/365) = 68.1yrs
C'est une approche naïve. Comment puis-je aborder cette question de manière professionnelle?
La solution suivante présentée précédemment par un membre de la pile a été très utile pour imprimer l'année.
int epoch_time = INT_MAX;
struct tm * timeinfo;
time_t epoch_time_as_time_t = epoch_time;
timeinfo = localtime(&epoch_time_as_time_t);
printf("2] overflow date: %s", asctime(timeinfo));
Pour moi votre l'approche est correcte. –
@MichaelWalz ce n'est pas exactement correct car il utilise 365 jours par an, en réalité le chiffre est de 365.242 ... –
Vous supposez une époque particulière? Il y a l'époque unix standard, mais vous pouvez utiliser une autre époque si vous le souhaitez. –