purpose   6년 전


이렇게 코드 작성했습니다. 혹시 런타임에러가 어디 뜨는지.. 알 수 있을까요?

그리고 열거형 작성을 이렇게 하는게 맞는지도 궁금합니다. 책을 봐도 이해가 어려워서 혹시 말로 풀어주실 수 있나요?

djm03178   6년 전

MON, TUE 등은 컴파일 타임에 정의된 이름일 뿐이지, 그걸 출력한다고 해서 이름이 출력되지 않습니다.

hgyolee   6년 전

1. for 문을 for ( [1] ; [2] ; [3] ) 이런 구조로 사용할 때,

[1]은 초기값 설정, [3]은 한 loop가 끝난 후 후처리입니다.

[2]는 loop를 시작하기 전 검사해야할 조건이 들어가는 위치입니다.

[2]가 TRUE인 경우에는 loop를 진행하고, FALSE인 경우에는 for 반복문을 종료하게 되죠.

[3]의 위치에 i-- 이 들어갔기 때문에, 한 loop가 끝날때마다 i값은 감소합니다.

만약 i가 3 이상이었다면 반복문은 한 번 밖에 실행되지 않고 끝나게 됩니다.

i-1이 1보다 크므로 i <= 1은 FASLE가 나오니까요.

반대로 i가 2 이하였다면, i-1은 1 이하의 값을가집니다.

그러면 i <= 1은 언제나 참이 되겠죠. 따라서 저 for문은 무한루프에 빠집니다.

의도하신 대로 1월에서 멈추게 하려면 i > 1이 맞습니다.

i값이 1이 되는 시점에 i > 1이 FALSE가 되고, for 문은 끝납니다.


2. 열거형의 선언은 저렇게 하는게 맞습니다. 하지만 사용이 틀렸습니다.

열거형 선언 내부의 명칭들은 각각 지정된 정수값을 다르게 표현하는 것이지

그 자체가 어떤 자료형을 가지는게 아닙니다.

당연히 문자열도 아니고, 따라서 %s로 출력할 수 없습니다.

코드에서나 MON, TUE로 사용할 수 있는 것이지

내부적으로는 그냥 정수 1, 정수 2로 인식합니다.


3. continue는 안쓰셔도 됩니다.

purpose   6년 전

감사합니다. 많은 도움이 됐습니다!

댓글을 작성하려면 로그인해야 합니다.