C函数time()如何处理小数秒?

C函数time()如何处理小数秒?,c,C,time()函数将返回1970年以来的秒数。我想知道它是如何对第二个返回值进行舍入的 例如,对于100.4s,它将返回100还是101 有明确的定义吗 时间函数返回实现的最佳近似值 当前日历时间。如果 日历时间不可用。如果计时器不是空指针,则 返回值也指定给它指向的对象 它是由实现定义的,因此除非您指定编译器和操作系统,否则答案是“最佳近似” 有明确的定义吗 没有 未指定日历时间的时间编码,但大多数系统都符合POSIX规范,并返回一个整数类型的值,该值保存自历元起的秒数。时间t为32位有符

time()
函数将返回1970年以来的秒数。我想知道它是如何对第二个返回值进行舍入的

例如,对于100.4s,它将返回100还是101

有明确的定义吗

时间函数返回实现的最佳近似值 当前日历时间。如果 日历时间不可用。如果计时器不是空指针,则 返回值也指定给它指向的对象

它是由实现定义的,因此除非您指定编译器和操作系统,否则答案是“最佳近似”

有明确的定义吗

没有


未指定日历时间的时间编码,但大多数系统都符合POSIX规范,并返回一个整数类型的值,该值保存自历元起的秒数。时间t为32位有符号整数的实现(许多历史实现)在2038年失败


ISO C标准并没有说太多。它只表示
time()
返回

实现与当前日历时间的最佳近似值

结果的类型为
time\u t
,它是一种实数类型(整数或浮点)“能够表示时间”

许多系统将时间执行为有符号整数类型,表示自1970-01-01 00:00:00 GMT以来的秒数


在我的Ubuntu系统上进行一个快速实验(比较
time()
gettimeofday()
返回的值)表明
time()
返回的值被截断,因此,例如,如果高精度时间是
1514866171.750058
,那么
time()
函数将返回
1514866171
。ISO C和POSIX都不能保证这一点,但我希望它在任何类似UNIX的系统上都能保持一致。

如果时钟分辨率为9秒,它实际上可以返回
99
:-)一般来说,时间是1514857893.927648(其中1514857893表示2018-01-02 01:51:33+00:00),然后
time()
将返回不舍入的整数部分-1514857893。这不是C标准的强制要求;POSIX说:time()函数将返回time[CX]的值⌦ 从那以后的几秒钟内。⌫如果您关心分数秒,请不要使用time(),而是使用clock_gettime()等。。。