我有 2 个 time_t 类型的变量 - varEnd 和 varStart。现在为了看看他们之间的区别我可以做
varEnd - varStart;
或者
difftime(varEnd, varStart);
并且都返回秒数。
请告诉我,如果他们有什么区别?或者哪个是推荐的?
该语言指定这time_t
是一种能够表示时间的算术类型。它不要求它以任何特定方式表示时间。
如果time_t
将时间表示为自某个时刻以来的秒数,则-
操作员将正确计算两个time_t
值之间的秒差。
如果不是(例如,如果粒度是一毫秒,或者如果 a 的位time_t
被分成代表年、月、日等的组),那么-
操作符可能会产生毫无意义的结果。
difftime()
另一方面,该函数“知道” a 如何time_t
表示时间,并使用该信息计算以秒为单位的差异。
在大多数实现上,简单的减法和difftime()
碰巧做同样的事情——但只能保证在所有实现上都能difftime()
正常工作。
另一个区别:difftime()
返回浮点类型的结果double
,而"-"
on time_t
values 产生类型的结果time_t
。在大多数情况下,结果将隐式转换为您分配给它的任何类型,但如果time_t
碰巧是无符号整数类型,则从较早的时间减去较晚的时间将产生一个非常大的值而不是负值。我见过的每个系统都实现time_t
为 32 位或 64 位有符号整数类型,但允许使用无符号类型——另一个原因是简单的time_t
值减法没有必要有意义。
difftime() 返回一个浮点双精度,除非您先将它们转换为双精度,否则只需减去它们就不会。
来源:这里