gpt4 book ai didi

c - 在 C 中打印时间 (0) 的格式说明符

转载 作者:行者123 更新时间:2023-12-02 08:30:51 28 4
gpt4 key购买 nike

我们可以声明一个变量来保存系统的当前时间:

time_t now = time(0);

time(0) 也可用于生成随机值:

#define SEED time(0);
srand((unsigned int )SEED);

我的问题是:time(0) 究竟是什么。默认情况下,它以毫秒为单位,类型为 long?如果我想打印出time(0)的值,可以用"%d"打印出来吗? (Sicne printf() 要求我们传入它需要的类型,但是我怎么知道 time(0) 的类型是什么?)。

如果是 time_t 类型,我应该在 printf 中使用什么格式说明符?

最佳答案

time_t 由 C 标准,C11,7.27.1/3 定义为:

[...] which are real types capable of representing times;

这意味着它可以是 int、long、unsigned long、double 或任何其他实数类型。基本上这是一个实现的选择。同样,它也没有定义 time_t 返回的单位,C11,7.27.2.4/3:

The time function returns the implementation’s best approximation to the current calendar time. The value (time_t)(-1) is returned if the calendar time is not available. If timer is not a null pointer, the return value is also assigned to the object it points to.

您必须阅读您的实现内容。我在 Linux 上的 glibc 实现说,time_t 返回的单位是秒。所以你可以将它转换为 uintmax_t 并打印:

time_t tvalue = time(0);
printf("%ju", (uintmax_t)tvalue);

或者您可以使用 difftime()它返回一个 double 作为两个 time_t 值之间的差异,因此您不必担心 time_t 的基础类型。

关于c - 在 C 中打印时间 (0) 的格式说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27057677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com