what is the difference between difftime and '-'?

我是研究僧i 提交于 2019-11-26 16:49:47

问题


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?


回答1:


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 two time_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 a time_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 only difftime() is guaranteed to work correctly on all implementations.

Another difference: difftime() returns a result of the floating-point type double, while "-" on time_t values yields a result of type time_t. In most cases the result will be implicitly converted to the type of whatever you assign it to, but if time_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 implements time_t as a 32-bit or 64-bit signed integer type, but using an unsigned type is permitted -- one more reason that simple subtraction of time_t values isn't necessary meaningful.




回答2:


difftime() returns a floating point double, just subtracting them doesn't unless you cast them to double first.
source: here



来源:https://stackoverflow.com/questions/13855890/what-is-the-difference-between-difftime-and

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!