当前位置: 首页 > 面试题库 >

time_t的最大值(结构timespec)

严琨
2023-03-14
问题内容

我正在使用struct timespec结构,这里是:

struct timespec {
           time_t tv_sec;                /* Seconds */
           long   tv_nsec;               /* Nanoseconds */
};

事情是,用户将为每个单独的成员输入值,我想检查一个最大值。用户可以输入的值。

我可以最多吗
的值time_t作为INT最大值?即INT_MAX对于tv_secLONG_MAX(在limits.h中定义)tv_nsec?两者的最低可接受值是多少?是零吗?我猜不能接受负值吗?只是要添加,这些值将在计时器中使用。

PS:typedef在哪里time_t?无法及时找到它。


问题答案:

time_t只是一个long int。
它是在(在我的Ubuntu
linux系统上)/usr/include/time.h中定义的,但是该定义一直延伸到/usr/include/bits/types.h,其中__SLONGWORD_TYPE__TIME_T_TYPE定义了)


简单检查一个值是否大于(例如)的问题LONG_MAX是,一旦值超过该值,它将自动环绕并变为负值。因此,您无法检查是否有任何值大于此值-
html" target="_blank">定义为该类型可以采用的最大值。

您实际上并不希望用户输入这些值-除非“用户”是指“开发人员”。测试此问题的唯一真正的“安全”方法是让用户输入字符串(当然是c样式),然后运行两次检查:
1)检查用户输入的数字是否超出允许的位数(便宜技巧是int(log10(number)) + 1计算数字中的位数)。
2)如果等于位数,则开始逐位比较。您可以使用一些取模运算来逐位比较。

这实际上是检查用户输入的数字是否太大的最安全的方法。尽管这样 非常麻烦,但您不会以这种方式遇到任何溢出问题。希望这可以帮助。



 类似资料:
  • 问题内容: 我在Linux机器上搜索,看到了这个typedef: 但是我找不到 定义。 问题答案: 维基百科的time_t文章对此有所启发。底线是C规范中不能保证的类型。 的数据类型是用于存储系统时间值所定义的ISO C库中的数据类型。这些值从标准 库函数返回。此类型是标准标头中定义的typedef。 ISO C将time_t定义为算术类型,但未指定任何特定类型 ,范围,分辨率或编码。还没有指定应

  • 本文向大家介绍数据结构中的最大WBLT操作,包括了数据结构中的最大WBLT操作的使用技巧和注意事项,需要的朋友参考一下 在这里,我们将看到什么是不同的Max-WBLT操作。HBLT具有不同的操作,例如插入,删除和初始化。它们也与WBLT非常相似。但是,融合操作可以在一次从上到下的过程中完成。 WBLT可以进行单遍熔合操作。因为我们可以在下降的过程中找到w值。我们可以根据需要更新w值并交换子树。对于

  • 本文向大家介绍插入数据结构中的最大HBLT,包括了插入数据结构中的最大HBLT的使用技巧和注意事项,需要的朋友参考一下 可以使用Max Meld操作将其插入Max HBLT。此操作用于将两个Max HBLT合并为一个Max HBLT。假设,我们想将x插入一个称为H的最大HBLT中。我们将使用x创建一个小的HBLT,然后将其与H融合,然后在融合之后,H将保留所有包含x的元素。因此,需要执行合并操作来

  • 本文向大家介绍从数据结构中的最大HBLT中删除最大元素,包括了从数据结构中的最大HBLT中删除最大元素的使用技巧和注意事项,需要的朋友参考一下 在Max HBLT中,将根放在根上。如果根被删除,则两个最大的HBLT(即左和右)将分开。通过再次将这两个Max HBLT融合在一起,我们可以将它们合并为一个。因此,在融合之后,所有元素都将存在,除了已删除的元素。

  • 问题内容: 是否可以做这样的事情 要么 在CSS中? 问题答案: ,和终于可以! 从Firefox 75,Chrome 79和Safari 11.1(除外)开始。 并接受任意数量的参数。 具有语法,等效于。 并且可以嵌套。它们既可以在内部使用,也可以在外部使用,它们还可以包含数学表达式,这意味着您可以避免使用它们。 因此,原始示例可以写成:

  • 我试图在我的Java项目中找到一个数据结构。我试图做的是从一组数字中获得低于任意数字的下一个最大值,或者如果不存在这样的数字,则得到通知。 例1)我的任意数字是7.0。{3.1, 6.0, 7.13131313, 8.0}我需要从这个集合中得到的数字是6.0。 例2)我的任意数字是1.0。{2.0, 3.5555, 999.0}集合中不存在下一个最高的数字,所以我需要知道它不存在。 我能想到的最好