difftime 和 '-' 之间有什么区别?

2023-12-22

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

varEnd - varStart; 

or

difftime(varEnd, varStart);

两者都返回秒数。

请告诉我,它们有什么区别吗?或者哪个是推荐的?


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

If time_t将时间表示为自某个时刻以来的秒数,-运算符将正确计算两个之间的秒数差异time_t values.

如果不是(例如,如果粒度是一毫秒,或者如果time_t分为代表年、月、日等的组),然后-运算符可能会产生无意义的结果。

The difftime() http://en.cppreference.com/w/c/chrono/difftime另一方面,函数“知道”如何time_t代表时间,并使用该信息来计算以秒为单位的差异。

在大多数实现中,简单的减法和difftime()碰巧做了同样的事情——但只是difftime()保证能正确工作all实施。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

difftime 和 '-' 之间有什么区别? 的相关文章

随机推荐