InicioInfoEl efecto 2038 y como probarlo desde C
El efecto 2038 y como probarlo desde C

Ya se habló de sobra del efecto 2000 hace tiempo: los programas que empleasen dos cifras para las fechas podrían considerar que el año 00 no era el 2000, sino el 1900, y calcular incorrectamente cualquier diferencia entre tiempos, con los problemas que podría conllevar.

Pero también existe el efecto 2038: muchos sistemas actuales están programados en lenguaje C (o alguno de sus "derivados" y en estos sistemas la forma "habitual" de contar fechas es como segundos transcurridos desde el 1 de enero de 1970.

¿El problema? En un sistema de 32 bits, como son la mayoría de los actuales, el tipo de datos "time_t" usado para guardar fechas equivale a un "long", un entero largo... y el número de segundos que se puede contar acaba en 2038, en la madrugada del 19 de enero. Un ejemplo para probarlo desde C sería éste




#include 
#include 

int main ()
{
 time_t momento;
 int i;

 momento = 2147483641;
 for (i = 0; i < 10; i++) {
   momento ++;
   printf ( "El instante %ld se convierte en %sn",
     momento, ctime ( &momento ) );
 }

 return 0;
}




Se supone que es C estándar, debería funcionar tanto desde Windows como desde Linux, y su resultado debería ser algo como:

El instante 2147483642 se convierte en Tue Jan 19 04:14:02 2038
El instante 2147483643 se convierte en Tue Jan 19 04:14:03 2038
El instante 2147483644 se convierte en Tue Jan 19 04:14:04 2038
El instante 2147483645 se convierte en Tue Jan 19 04:14:05 2038
El instante 2147483646 se convierte en Tue Jan 19 04:14:06 2038
El instante 2147483647 se convierte en Tue Jan 19 04:14:07 2038
El instante -2147483648 se convierte en (null)
El instante -2147483647 se convierte en (null)
El instante -2147483646 se convierte en (null)
El instante -2147483645 se convierte en (null)


¿La solución? Debería venir "sóla". En sistemas de 64 bits, y si se usa realmente el tipo "time_t", esto debería ocultar los detalles del hardware, y debería bastar con recompilar el fuente para tener una vida muuuucho más larga. Esperemos que en el 2038 no queden muchos equipos con software de 32 bits y/o que no lo hayan previsto...



Y ustedes que opinan?
Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Posts Relacionados

Anónimo
0
archivado
Anónimo
0
archivado
Anónimo
0
archivado

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

e
esmerlin0🇦🇷
Usuario
Puntos0
Posts44
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.