我有time_t类型的2个变量 - varEnd和varStart。 现在,为了看到他们之间的区别或者是我可以做
varEnd - varStart;
要么
difftime(varEnd, varStart);
和两个返回的秒数。
请让我知道,如果他们有什么区别吗? 或者是推荐一个?
我有time_t类型的2个变量 - 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()返回一个浮点双,只是减去他们不会,除非你投他们首先将翻一番。
来源: 这里