我之前尝试过问这个问题,但我忘了包括一个问题(因为我刚刚加入该网站),所以我实际上并没有解决我的问题,人们只是告诉我为什么第二段代码是错误的,而不是如何让它工作。这是家庭作业的一部分。其目的是最终将 INT_MAX+1 放入 ctime 中,以证明在 32 位机器中日期不能通过 ~2038 的观点,因为它自 1970 年以来的秒数耗尽了位。我的问题很简单,我怎样才能把很长的时间放进ctime?如何使第二位代码工作?
如果这很重要,所有这些都是用 C99 编译的。
工程:
long x = INT_MAX-1;
printf("Time: %s",ctime(&x));
不起作用:
long long x = INT_MAX+1;
printf("Time: %s",ctime(&x));
错误:
incompatible pointer type: "Expected 'const time_t *' but argument is of type 'long long int *'"
你不能。 您正在使用 32 位time_t
值的系统。 传递 64 位long long
会给你一个错误,因为它不起作用。