c - tabla - ¿Qué tipo de datos primitivos es time_t?
tipos de datos primitivos en c (4)
Esta pregunta ya tiene una respuesta aquí:
- ¿Qué es en última instancia un time_t typedef para? 10 respuestas
No sé el tipo de datos de time_t
. ¿Es un flotador doble o algo más? Porque si quiero mostrarlo necesito la etiqueta que corresponde con ella para printf
. Puedo manejar el resto desde allí para mostrar time_t
pero necesito saber el tipo de datos que se corresponde con él.
Desafortunadamente, no es completamente portátil. Generalmente es integral, pero puede ser cualquier "tipo entero o flotante real".
Es específico de la plataforma. Pero puedes lanzarlo a un tipo conocido.
printf("%lld/n", (long long) time(NULL));
Puede utilizar la función difftime
. Devuelve la diferencia entre dos valores de time_t
dados, el valor de salida es double
(consulte la documentación de difftime ).
time_t actual_time;
double actual_time_sec;
actual_time = time(0);
actual_time_sec = difftime(actual_time,0);
printf("%g",actual_time_sec);
Siempre puede usar algo como mktime para crear una hora conocida (medianoche, anoche) y usar difftime para obtener una diferencia de tiempo de doble precisión entre las dos. Para una solución independiente de la plataforma, a menos que vaya a profundizar en los detalles de sus bibliotecas, no lo hará mucho mejor que eso. De acuerdo con la especificación C, la definición de time_t está definida por la implementación (lo que significa que cada implementación de la biblioteca puede definirla como lo desee, siempre que las funciones de la biblioteca que la utilicen se comporten de acuerdo con la especificación).
Dicho esto, el tamaño de time_t en mi máquina de linux es de 8 bytes, lo que sugiere una int larga o una doble. Así que lo hice:
int main()
{
for(;;)
{
printf ("%ld/n", time(NULL));
printf ("%f/n", time(NULL));
sleep(1);
}
return 0;
}
El tiempo dado por el% ld aumentó en uno en cada paso y el flotador se imprimió 0.000 cada vez. Si está empeñado en usar printf para mostrar time_ts, lo mejor es probar su propio experimento y ver cómo funciona en su plataforma y con su compilador.