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