什么原始数据types是time_t?

我不知道time_t的数据types。 这是一个浮动双或其他东西? 因为如果我想显示它,我需要与printf相对应的标签。 我可以从那里处理其余的显示time_t但我需要知道与之相对应的数据types。

不幸的是,它不是完全可移植的。 这通常是不可或缺的,但它可以是任何“整型或实型浮点型”。

它是特定于平台的。 但是你可以把它转换成已知的types。

 printf("%lld\n", (long long) time(NULL)); 

你可以使用函数difftime 。 它返回两个给定time_t值之间的差异,输出值是double (请参阅difftime文档 )。

 time_t actual_time; double actual_time_sec; actual_time = time(0); actual_time_sec = difftime(actual_time,0); printf("%g",actual_time_sec); 

你总是可以使用像mktime这样的东西来创build一个已知的时间(午夜,昨晚),并使用difftime来获得两者之间的双精度时间差。 对于一个独立于平台的解决scheme,除非你深入了解你的库的细节,否则你不会做得更好。 根据C规范,time_t的定义是实现定义的(意味着每个库的实现都可以定义它,只要库函数使用它的行为符合规范)。

话虽如此,我的linux机器上的time_t的大小是8个字节,这表明一个长的int或一个double。 所以我做了:

 int main() { for(;;) { printf ("%ld\n", time(NULL)); printf ("%f\n", time(NULL)); sleep(1); } return 0; } 

%ld给出的时间每增加一步,浮点数每次打印0.000。 如果你厌恶使用printf来显示time_ts,那么最好的办法就是尝试一下你自己的实验,看看它是如何在你的平台和编译器上运行的。