来自difftime()手册页:
double difftime(time_t time1, time_t time0);difftime()函数返回时间time1和时间time0(表示为double)之间的秒数。
既然‘秒数’不需要浮点数,为什么这个函数会返回一个double
发布于 2015-12-24 21:19:34
这个文档在这一点上更加清楚:
在POSIX系统中,time_t是以秒为单位测量的,而扩散时间相当于算术减法,但是C和C++允许time_t的分数单位。
虽然为整数类型,对于非POSIX系统,这是可能的,这可以返回小数秒.
发布于 2015-12-24 21:28:24
C允许各种标量数字(整数、浮点)表示时间。它需要是“.能够代表时间的真实类型”,C11第7.27.3节,
在
clock_t and time_t中可表示的时间的范围和精度是实现定义的。C11dr§7.27.1 4
两个time_t值之间的差异,作为一个double,提供了不同的范围和精度。
OP,“既然‘秒数’不需要浮点数,为什么这个函数会返回双倍?
编辑Linux/posix可能不会使用秒数,但其他系统已经这样做了。定义difftime()的C标准选择double,它可以容纳秒的整数积累以及其他OS实现。
https://stackoverflow.com/questions/34457931
复制相似问题