来自difftime()的手册页:
double difftime(time_t time1, time_t time0);
difftime()
函数返回时间time1
和时间time0
,表示为double
。
既然"number of seconds"不需要浮点数,为什么此函数会返回double
?
本文档更清楚地说明了这一点:
在POSIX系统上,时间_t是以秒为单位测量的,difftime相当于算术减法,但C和C++允许时间_t使用分数单位。
尽管POSIX要求time_t
是整数类型,但对于非POSIX系统,这可能会返回小数秒。
C允许使用各种标量(整数、浮点)来表示时间。它需要是"…能够表示时间的实数类型"C11§7.27.13,
clock_t and time_t
中可表示的时间范围和精度为实现定义。C11dr§7.27.1 4
两个time_t
值之间的差异,作为double
,提供了变化范围和精度。
OP,"既然‘秒数’不需要浮点数,为什么这个函数会返回一个双精度
[Edit]Linux/posix可能不使用秒的小数,但其他系统已经这样做了。定义difftime()
的C标准选择double
,它可以容纳秒的整数累积,以及其他操作系统实现。