본문 - 03-18, 2014 13:14에 작성됨.
오늘 C 숙제를 이리 해서 냈는데
#include<stdio.h>
main(void)
{
int day, month ;
long year ;
printf("Welcome!\n\nEnter date of birth in the yyyy-mm-dd format: ") ;
scanf("%4ld-%2d-%2d", &year, &month, &day) ;
printf("\nYour date of birth in the (mm/dd/yyyy) format is %02d/%02d/%04ld\n", month, day, year) ;
return 0 ;
}
ccg로 컴파일해서 Year값을 좀 크게 넣으면(ex:65562) day가 4195408로 나오고 month는 00이되는데
뭐가 문제인지 몰라서 그냥 제출함, 알아서 검사할 때는 4글자 넣어서 돌리겠지 싶긴 한데... 왜 저렇게 되는지 모르니 답답 ㅠ
14개의 댓글이 있습니다.
year를 처리할 때 "다섯번째 글자"는 거들떠보지도 않고 다음으로 넘기게 됩니다.
교재가 영어라 이상한놈을 넣었군요 ㅠ
오버플로우라도 일어난건가?
이게 오버플로우가 맞는지는 잘 모르겠네요 ㅠㅠ
좋은 습관은 아니지만..
void main()은 절대로 사용해서는 안 되는 형태입니다.
참고로 int main()에서는 return 0;을 생략할 수 있습니다.