gpt4 book ai didi

c++ - 表示time_t之间的差异

转载 作者:行者123 更新时间:2023-11-30 02:05:14 25 4
gpt4 key购买 nike

为什么 difftime( time_t t1, time_t t2) 方法返回的两个 time_t 之间的差值是 double?我不明白精度要求从何而来。

最佳答案

因为 time_t 在标准中被简单地定义为一个能够表示时间的算术类型

这就是它所说的全部内容。它不必是整数,也不必代表秒。它只能是 10 的倍数,或者它可能是能够表示分辨率低至 10-43 秒的时间的浮点类型。

C99 7.23.1 Components of time 中的引述是(略有释义):

Types declared are clock_t and time_t, which are arithmetic types capable of representing times. The range and precision of times representable in clock_t and time_t are implementation-defined.

因此人们盲目计算时差:

delta = time_end - time_begin;

可能会发现他们的代码并不适用于所有平台。

现在我不知道有什么平台不是自纪元以来的简单秒数,但我一直被假设所困扰就像之前这样,例如假设AZ 是连续的,而事实上,这不是必需的,并且在使用 EBCDIC 的大型机产品上效果不佳。而且,是的,它们是 still大量 使用中,尽管自 60 年代以来显然已经死亡 :-)

C99 基本原理文档是这样说的:

The types clock_t and time_t are arithmetic because values of these types must, in accordance with existing practice, on occasion be compared with -1 (a "don’t-know" indication), suitably cast.

No arithmetic properties of these types are defined by the Standard, however, in order to allow implementations the maximum flexibility in choosing ranges, precisions, and representations most appropriate to their intended application. The representation need not be a count of some basic unit; an implementation might conceivably represent different components of a temporal value as subfields of an integer type.

关于c++ - 表示time_t之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com