difftime和' - '有什么区别?

时间:2012-12-13 08:34:36

标签: c time-t

我有2个类型为time_t的变量 - varEnd和varStart。 现在为了看看它们之间的区别 要么我能做到

varEnd - varStart; 

difftime(varEnd, varStart);

并且都返回秒数。

如果他们有任何区别,请告诉我?或哪个是推荐的?

2 个答案:

答案 0 :(得分:31)

该语言指定time_t是能够表示时间的算术类型。它不要求它以任何特定的方式表示时间。

如果time_t表示时间为某个时刻的秒数,则-运算符将正确计算两个time_t值之间的秒数差异。

如果不是(例如,如果粒度是一毫秒,或者time_t的位被分成表示年,月,日等的组),那么{{1}运算符可以产生无意义的结果。

另一方面,difftime()函数“知道”-如何表示时间,并使用该信息计算以秒为单位的差异。

在大多数实现中,简单的减法和time_t碰巧做同样的事情 - 但只保证difftime()能够在所有实现上正常工作。

另一个区别:difftime()返回浮点类型difftime()的结果,而double上的"-"值会返回time_t类型的结果。在大多数情况下,结果将隐式转换为您为其分配的任何类型,但如果time_t恰好是无符号整数类型,则从较早时间减去较晚时间将产生非常大的值而不是负值。我见过的每个系统都将time_t实现为32位或64位有符号整数类型,但允许使用无符号类型 - 这是time_t值的简单减法的另一个原因必要的有意义。

答案 1 :(得分:2)

difftime()返回一个浮点double,只是减去它们,除非你先将它们加倍 来源:here