如果用户输入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;
}
时间 0x7FFFFFFFFFFFFFFF 似乎是在公元 292,471,210,647 年左右,这无疑会导致ctime
超过 C99 所保证的 26 个字符,因此它返回 NULL 而不是溢出其缓冲区。一般来说,尽量避免发生在莫洛克人与埃洛伊人交战之后的任何日期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)