#include <stdio.h>
#include <time.h>
int main(){
printf("%d\n", time(NULL));
printf("Second: %ld\n", time(NULL)/60);
printf("Minute: %ld\n", time(NULL)/(60*60));
printf("Hour: %ld\n", time(NULL)/(60*60*60));
printf("Day %ld\n", time(NULL)/(60*60*60*24));
return 0;
}
今天是11月19日,是一年中的第323天。当我运行程序时,它打印出321。这是什么原因?
2条答案
按热度按时间mrphzbgm1#
time(NULL)
返回自1970年1月1日以来的秒数。你的计算是错误的,因为你假设它们是从当前年份的开始,你除以秒一次太多。
令人惊讶的是,这两个错误几乎相互抵消,你最终得到的结果几乎是正确的,但并不完全正确。事实上,如果你在两年前(即1970年后的60年)运行这个程序,你会得到“正确”的结果。事实上,如果你在8年后(即1970年后的60年)运行这个程序,你会得到“正确”的答案。
cld4siwp2#
因为你的日计算出错了。这里有一个正确的方法: