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

感谢检查time_t变量初始化

+0

如果你是一个正在编码的人,你应该知道一个变量是否被初始化。否则,作为一般原则,如果您不完全控制输入,则健全性检查始终是您的责任。要检查是否大于0.0,请执行if(difftime(t2,t1)> 0.0){//您的代码}。 –

回答

1

如何检查是否一个time_t的变量初始化?

确实没有办法检查它是否已经初始化。如果它没有初始化,它可以是任何发生在内存中的随机值。您应该按照您知道它已初始化的方式进行编程。

如果我想计算两个time_t的的差异瓦尔与 difftime功能,我需要invokation之前,需要手动执行任何完整性检查 ?

我不这么认为。由于time_t是一个整数类型,它总是处于有效状态(整数没有nan或inf状态,比如浮点数),所以我没有理由会得到无效的输出。我想你可以根据你正在解决的prolbem的上下文来检查time_t的值是否有意义。比如2000年前的某个时间可能没有意义。

此外,由于difftime返回值是双,我怎么检查 该值大于0.0?

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

+0

理智检查:也许't!= -1'。 -1是'time()'的错误返回值。顺便说一下,'time_t'不是由C定义的整数值。它必须是一些整数或FP类型。 – chux

0

READ THIS: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万年的时间差。

+0

“基本上,time_t通常以64位整数实现。” C允许包括FP在内的许多其他类型。 – chux

+0

@chux无关紧要。另外,我常常使用“经常”,而不是总是。 –