time()
函数将返回自1970年以来的秒数。我想知道如何对返回的第二个进行舍入。
例如,对于100.4s,它会返回100还是101?
是否有明确的定义?
答案 0 :(得分:4)
ISO C标准并没有多说。它只表示time()
返回
实施对当前日历时间的最佳近似值
结果是time_t
类型,它是一个真正的类型(整数或浮点),“能够表示时间”。
许多系统将time_t
实现为有符号整数类型,表示自1970-01-01 00:00:00 GMT以来的整数秒。
我的Ubuntu系统上的快速实验(比较time()
和gettimeofday()
返回的值)表示time()
返回的值被截断,例如,如果高精度时间为1514866171.750058
,time()
函数将返回1514866171
。 ISO C和POSIX都不能保证这一点,但我希望它能在任何类UNIX系统上保持一致。
答案 1 :(得分:3)
time函数返回实现的最佳近似值 当前的日历时间。如果是,则返回值(time_t)( - 1) 日历时间不可用。如果timer不是空指针,那么 返回值也分配给它指向的对象。
它是实现定义的,因此除非您指定编译器和操作系统,否则答案是“最佳近似”。
答案 2 :(得分:2)
是否有明确的定义?
没有
http://en.cppreference.com/w/c/chrono/time
time_t中的日历时间编码未指定,但大多数系统符合POSIX规范,并返回保持自Epoch以来的秒数的整数类型的值。 time_t是32位有符号整数(许多历史实现)的实现在2038年失败。