2015-02-03 2 views
0

이 프로그램을 이해하는 데 문제가 있습니다. 즉, tm_mon +1 부분입니다.struct tm에서 tm_mon을 조작 하시겠습니까?

저는 C 언어에 익숙하지 않습니다. 나는 보통 내가 따르고있는 교과서에서 설정 한 모든 도전 과제에 대해 내 자신의 작은 프로그램을 작성하지만이 문제에 대한 해결책을 다른 사람과상의해야했습니다. 코스 북과 그 코드의 혼합, 내 것이 아니기 때문에) +1tm_mon에 추가 된 이유를 이해할 수 없습니다. 나는 tm_mon = January을 이해하지만, +1이 어떻게 달라 지는지 명확하지 않으며 이유는입니다. +1이 아니고 다른 숫자가 아닙니다.

이 프로그램은 4 백만 초가 될 날짜를 알려줍니다.

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

int main(int argc, const char * argv[]) 
{ 

    long secondsToFuture = time(NULL) + 4000000; 
    struct tm futureTime; 
    localtime_r(&secondsToFuture, &futureTime); 

    printf("The date in 4,000,000 seconds will be %d-%d-%d\n", futureTime.tm_mon + 1, futureTime.tm_mday, futureTime.tm_year + 1900); 

    return 0; 
} 

내가이 문제에 조금 관심을 가졌음을 이해합니다.

+2

'tm_mon'멤버는 * 제로 기반 *, 즉 1 월은 0이고 12 월은 11입니다. –

답변

1

다음 표를 참조하십시오. 보시다시피 tm_mon은 0 = 1 월에서 11 월 12 월 사이의 값입니다.

enter image description here

'*'일반적으로 0-59이다 tm_sec. 여분의 범위는 특정 시스템에서 윤초를 수용하는 것입니다.

편집 날짜 2015년 1월 1일의 경우 +1없이 귀하의 경우 에서 다음

실제 출력은 1와

The date in 4,000,000 seconds will be 0/1/2015 

출력

을 추진한다 할 것이다
The date in 4,000,000 seconds will be 1/1/2015 
+0

내가 편집했습니다. [이] (http://www.cplusplus.com/reference/ctime/tm/) 링크를보십시오 – LPs

+0

위의 내용을 +1 할 수없는 이유는 무엇입니까? 0에서 시작한다는 것을 이해합니다. +1의 역할에 대해 확신하지 못합니다. – cheznead

+0

나는 당신에게 aswer을 편집했습니다 – LPs

관련 문제