I have 2 variables of type time_t - varEnd and varStart. Now in order to see the difference between them Either I can do
varEnd - varStart;
or
difftime(varEnd, varStart);
and both returns number of seconds.
Please let me know, if they have any difference? or which is the recommended one?
difftime() returns a floating point double, just subtracting them doesn't unless you cast them to double first.
source: here
The language specifies that
time_t
is an arithmetic type capable of representing times. It doesn't require it to represent times in any particular way.If
time_t
represents time as the number of seconds since some moment, the-
operator will correctly compute the difference in seconds between twotime_t
values.If it doesn't (say, if the granularity is one millisecond, or if the bits of a
time_t
are divided into groups representing years, months, days, etc.), then the-
operator can yield meaningless results.The
difftime()
function, on the other hand, "knows" how atime_t
represents a time, and uses that information to compute the difference in seconds.On most implementations, simple subtraction and
difftime()
happen to do the same thing -- but onlydifftime()
is guaranteed to work correctly on all implementations.Another difference:
difftime()
returns a result of the floating-point typedouble
, while"-"
ontime_t
values yields a result of typetime_t
. In most cases the result will be implicitly converted to the type of whatever you assign it to, but iftime_t
happens to be an unsigned integer type, subtraction of a later time from an earlier time will yield a very large value rather than a negative value. Every system I've seen implementstime_t
as a 32-bit or 64-bit signed integer type, but using an unsigned type is permitted -- one more reason that simple subtraction oftime_t
values isn't necessary meaningful.