0
  • 如何检查 time_t 变量是否已初始化?
  • 如果我想使用 difftime 函数计算两个 time_t 变量的差异,是否需要在调用之前手动执行任何健全性检查?
  • 另外,由于 difftime 返回值是双精度值,如何检查该值是否大于 0.0?

谢谢

4

2 回答 2

1

如何检查 time_t 变量是否已初始化?

确实没有办法检查它是否已初始化。如果它没有被初始化,它可以是任何碰巧驻留在内存位置的随机值。您应该以您知道它已初始化的方式进行编程。

如果我想使用 difftime 函数计算两个 time_t 变量的差异,是否需要在调用之前手动执行任何健全性检查?

我不这么认为。由于 time_t 是整数类型,它始终处于有效状态(整数没有像浮点那样的 nan 或 inf 状态),因此我认为没有理由得到无效输出。我想您可以根据您正在解决的问题的上下文检查 time_t 的值是否有意义。例如,将一个时间指向 2000 年前的时间可能没有意义。

另外,由于 difftime 返回值是双精度值,如何检查该值是否大于 0.0?

使用 if 语句。 if(dt > 0.0) {...}

于 2016-07-22T13:57:56.600 回答
0

阅读:time_t 上的 cppreference 页面

非常有用的信息,因为 cppreference 也涵盖了 C。

  1. 基本上,time_t通常实现为 64 位整数。这意味着默认初始化与time_t普通 old相同int。您不必“初始化”它以在其中存储值。

  2. 与 C 中的往常一样,您无法真正检查是否对整数值进行了一些错误操作,将其设置为实际上无法使用但仍然有效的值 - 意思是不,只要确保不要让任何变量未初始化即可。

  3. difftime > 0. 为什么它不起作用?double可以准确地表示高达 ~100,000,000,000,000 的整数值。那是300万年的时差。

于 2016-07-22T14:04:42.587 回答