책 내용 질문하기
1권 128p 문제40
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
128
조회수
982
작성일
2019-03-17
작성자
탈퇴*원
첨부파일

int i=0, hap=0;

for(i=1;i<=5,++i)   : 답안지에 있는 해설이 이해가 안되서요. "2번 문장 끝에 세미콜론이 있으므로 별도의 반복 범위 없이 반복 변수만 증가시킨다" 

 

hap +=i

 

 

 

답안지(529p) 디버깅을 보면

hap가 0 다음 6이 나와있는데요.

 

위에 식에 hap +=i면.. 

i=0, hap=0+0=0

i=1, hap=0+1=1

i=2, hap=1+2=3

i=3, hap=6

i=4, hap=10

 

이런식으로 디버깅이 된다고 생각하고 있었거든요, hap이 왜 0 다음 6으로 디버깅 되는지 알려주세요~

답변
2019-03-18 13:57:32

안녕하세요 길벗수험서 운영팀입니다.

 

for문이 반복시키는 코드의 범위를 확실히 구분하셔야 합니다.

 

for문에 중괄호{}가 있다면 중괄호{} 내의 코드를 반복하지만, 중괄호{}가 없다면 세미콜론;까지가 for문의 끝입니다.

 

즉 40번의 경우

for(i = 1; i <= 5; ++i); 

hap += i;

 

이와 같이 for문의 뒤에 세미콜론;이 있으므로 for문이 아래 hap을 누적시키는 코드를 제외하고, 혼자 반복하게 됩니다.

 

즉 i가 1~5까지 반복되며 마지막에 증가값 ++i를 수행하여 6이 되고, 조건식 i<=5가 거짓이 되며 빠져나오게 되죠.

이때 hap+=i가 수행되어 hap에 6을 가산한 다음 출력 후 종료되게 됩니다.

 

세미콜론;의 위치를 파악하고 for문의 범위가 어디까지인지 확실히 파악해두세요.

 

행복한 하루되세요 :)

  • 관리자
    2019-03-18 13:57:32

    안녕하세요 길벗수험서 운영팀입니다.

     

    for문이 반복시키는 코드의 범위를 확실히 구분하셔야 합니다.

     

    for문에 중괄호{}가 있다면 중괄호{} 내의 코드를 반복하지만, 중괄호{}가 없다면 세미콜론;까지가 for문의 끝입니다.

     

    즉 40번의 경우

    for(i = 1; i <= 5; ++i); 

    hap += i;

     

    이와 같이 for문의 뒤에 세미콜론;이 있으므로 for문이 아래 hap을 누적시키는 코드를 제외하고, 혼자 반복하게 됩니다.

     

    즉 i가 1~5까지 반복되며 마지막에 증가값 ++i를 수행하여 6이 되고, 조건식 i<=5가 거짓이 되며 빠져나오게 되죠.

    이때 hap+=i가 수행되어 hap에 6을 가산한 다음 출력 후 종료되게 됩니다.

     

    세미콜론;의 위치를 파악하고 for문의 범위가 어디까지인지 확실히 파악해두세요.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.