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