我有2个类型为time_t的变量 - varEnd和varStart。 现在为了看看它们之间的区别 要么我能做到
varEnd - varStart;
或
difftime(varEnd, varStart);
并且都返回秒数。
如果他们有任何区别,请告诉我?或哪个是推荐的?
答案 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