检查time_t变量是否已初始化

时间:2016-07-22 13:42:13

标签: c time difftime

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

由于

2 个答案:

答案 0 :(得分:1)

  

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

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

  

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

我不这么认为。由于time_t是一个整数类型,它总是处于有效状态(整数没有像浮点一样的nan或inf状态),因此我认为你没有理由得到无效的输出。我猜你可以检查time_t的值是否有意义,因为你正在解决你的问题。比如让一个人提到2000年前的时间可能没有意义。

  

另外,由于difftime返回值是double,我该如何检查   这个值大于0.0?

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

答案 1 :(得分:0)

请阅读:cppreference page on time_t

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

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

  2. 和C一样,你无法真正检查你是否对一个整数值做了一些不好的操作,将它设置为几乎无法使用但仍然有效的东西 - 意思是没有,只要确保不让任何变量没有初始化。

  3. difftime > 0。为什么它不起作用? double可以准确地表示最大约100,000,000,000,000的整数值。这是一个300万年的时差。