ctime 返回 null

标签 c macos time x86-64 ctime

如果用户类型time_t定义为__darwin_time_t,在MacOS X中它本身定义为long,为什么会出现下面的代码输出8 时间是(null)?也许这很愚蠢,但我真的无法理解。

#include <stdio.h>
#include <time.h>

int main(void)
{
    time_t time = 0x7FFFFFFFFFFFFFFF;

    printf("%lu\n"
           "Time is %s\n", sizeof(time_t), ctime(&time));

    return 0;
}

最佳答案

时间 0x7FFFFFFFFFFFFFFF 似乎是公元 292,471,210,647 年左右,这无疑会导致 ctime 超过 C99 保证的 26 个字符,因此它返回 NULL 而不是溢出其缓冲区。一般来说,尽量避免发生在莫洛克人与埃洛伊人交战之后的任何日期。

关于ctime 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035000/

相关文章:

java - 减去 System.currentTimeMillis() 得到零

c - 当尝试在 C 中打印 char 二维数组时,% 符号继续打印

c - 使用 floorf 减少小数位数

ios - 在 block 中引用 iOS 应用程序委托(delegate)是否会创建委托(delegate)对象的副本?

macos - Mac应用商店: changing minimum system requirements

java - 从 Java 文本文件中获取时间值

c++ - 来自 WDK 示例的 DbgPrint

c - Windows 的 SIGCHLD 替换

php - mongo php 驱动程序扩展在 cli 中加载,而不是在 OSX 中加载 apache

r - 使用 R 将不规则时间戳数据转换为规则间隔数据