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 él para printf
. Puedo manejar el resto desde allí para mostrar time_t
, pero necesito saber el tipo de datos que se corresponde con él.¿Qué tipo de datos primitivos es time_t?
Respuesta
Lamentablemente, no es completamente portátil. Por lo general, es integral, pero es can be cualquier "tipo entero o flotante real".
Siempre puedes 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 profundizando en los detalles de sus bibliotecas, no va a hacer mucho mejor que eso. Según 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 prefiera, siempre que la biblioteca funcione con el uso se comporte según la especificación)
Dicho ser dicho, el tamaño de time_t en mi máquina Linux es de 8 bytes, lo que sugiere un int largo o un 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% incrementado en uno de cada paso y el flotador imprimieron 0.000 cada vez. Si está empeñado en usar printf para mostrar time_ts, su mejor opción es probar su propio experimento y ver cómo funciona en su plataforma y con su compilador.
Sé que su comentario es antiguo, pero necesita usar 'printf ("% f \ n ", (double) time (NULL));' porque printf es una función vararg. –
Es específico de la plataforma. Pero puedes convertirlo a un tipo conocido.
printf("%lld\n", (long long) time(NULL));
Eso supone que la plataforma admite (larga duración). Es precisamente cuando no necesita que sepa que time_t es solo de 32 bits. –
También se supone que 'long long' es lo suficientemente grande como para contener el valor. En cuanto al estándar dice 'time_t' puede ser el número de yoctosegundos desde que se emitió el primer episodio de Monty Python (que lo hará más grande que 64 bits). – skyking
@skyking no miente. Necesitará al menos un número de 111 bits para mantener dicho valor (aproximadamente 1.5e33). Hasta que pongan 'long long long long'' en el estándar, puede prepararse para el futuro almacenando todos sus' time_t's en 'uint64_t [2]'. – Balthamos
Puede usar la función difftime
. Devuelve la diferencia entre dos valores dados de time_t
, el valor de salida es double
(consulte difftime documentation).
time_t actual_time;
double actual_time_sec;
actual_time = time(0);
actual_time_sec = difftime(actual_time,0);
printf("%g",actual_time_sec);
- 1. Nulo para tipos de datos primitivos
- 2. ¿Qué es "largo"? ¿tipo de datos?
- 3. ¿Qué es uintptr_t tipo de datos
- 4. Obteniendo el tipo/tamaño de `time_t` usando ctypes
- 5. ¿Es time_t devuelto por time() zona específica?
- 6. Tipos de datos primitivos multiplataforma en C++
- 7. ¿Cómo extraer horas de time_t?
- 8. Cómo leer datos en una variable time_t usando scanf()?
- 9. lo que es c time_t equivalente para C#
- 10. ¿Qué es el tipo de datos MLSLABEL Oracle?
- 11. ¿qué es equivalente al tipo de datos largos en postgresql?
- 12. Representación de cadena de time_t?
- 13. ASN1_TIME to time_t conversión
- 14. ¿Registrar un tipo con un constructor de argumentos primitivos?
- 15. Qué tipo es System.Byte [*]
- 16. ¿Qué es un tipo?
- 17. ¿Qué tipo de elenco es de Tipo * a vacío *?
- 18. ¿Los moldes primitivos de tipo entero de Java están "limitados" a MAX_INT del tipo de fundición?
- 19. ¿Qué son los accesadores 'primitivos' en Core Data?
- 20. ¿Qué tipo de datos .NET es mejor para mapear el NÚMERO de tipo de datos de Oracle en NHibernate?
- 21. Java: Arsenal de tipos de datos primitivos no AUTOBOX
- 22. ¿Qué tipo de base de datos NoSQL es más adecuada para almacenar datos jerárquicos?
- 23. ¿Qué tipo de datos es mejor para almacenar artículos en la base de datos SQL?
- 24. Convirtiendo un time_t al objeto NSDate?
- 25. ¿Cuál es el tipo de datos "átomo"?
- 26. ¿Por qué los tipos de datos primitivos no están permitidos en java.util.ArrayList?
- 27. ¿Hay tipos de datos primitivos en C# atomic (thread safe)?
- 28. ¿Qué tipo es una función?
- 29. qué es 'tipo con nombre'
- 30. ¿Qué tipo de datos es adecuado para manejar datos binarios en el método ActiveX?
Esto ya ha sido respondida aquí: http://stackoverflow.com/questions/471248/what-is-ultimately-a-time-t-typedef-to –
Para aquellos que caen aquí en busca cómo printf a time_t, la misma discusión se aplica a clock_t y se ha realizado [aquí] (http://stackoverflow.com/questions/1083142/whats-the-correct-way-to-use-printf-to-print-a-clock -t). –
@FirasAssaad Esa respuesta es para Linux. esta publicación no es específica del sistema operativo. – chux