usa time_t libreria como c time-t

time_t - struct tm



¿Cuál es la diferencia entre difftime y ''-''? (2)

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.

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?


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