ctime返回null

sid*_*yll 0 c macos time x86-64 ctime

如果用户类型time_t定义为__darwin_time_t,其本身long在MacOS X中定义,为什么以下代码输出8 Time is (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;
}
Run Code Online (Sandbox Code Playgroud)

jwo*_*der 7

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