usa ¿Cuál es la diferencia entre difftime y '-'?




time_t c (2)

Tengo 2 variables de tipo time_t - varEnd y varStart. Ahora con el fin de ver la diferencia entre ellos, o puedo hacer

varEnd - varStart; 

o

difftime(varEnd, varStart);

y ambos devuelve el número de segundos.

Por favor, hágamelo saber, si tienen alguna diferencia? ¿O cuál es la recomendada?


El lenguaje especifica que time_t es un tipo aritmético capaz de representar tiempos. No requiere que represente tiempos de ninguna manera particular.

Si time_t representa el tiempo como el número de segundos desde algún momento, el operador - calculará correctamente la diferencia en segundos entre dos valores time_t .

Si no lo hace (por ejemplo, si la granularidad es de un milisegundo o si los bits de a time_t se dividen en grupos que representan años, meses, días, etc.), el operador - puede proporcionar resultados sin sentido.

La función difftime() , por otro lado, "sabe" cómo un time_t representa una hora, y utiliza esa información para calcular la diferencia en segundos.

En la mayoría de las implementaciones, la resta simple y difftime() hacen lo mismo, pero solo se garantiza que difftime() funcione correctamente en todas las implementaciones.

Otra diferencia: difftime() devuelve un resultado del tipo de punto flotante double , mientras que "-" en los valores de time_t produce un resultado del tipo time_t . En la mayoría de los casos, el resultado se convertirá implícitamente al tipo de lo que se le asigne, pero si time_t es un tipo entero sin signo, la resta de un tiempo posterior de un tiempo anterior producirá un valor muy grande en lugar de un valor negativo . Cada sistema que he visto implementa time_t como un tipo entero con signo de 32 bits o 64 bits, pero se permite el uso de un tipo sin signo, una razón más por la que la simple resta de los valores time_t no es necesariamente significativa.


difftime () devuelve un doble de punto flotante, solo restándolos no lo hace a menos que los conviertas al doble primero.
fuente: here





time-t