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으로 디버깅 되는지 알려주세요~
안녕하세요 길벗수험서 운영팀입니다.
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문의 범위가 어디까지인지 확실히 파악해두세요.
행복한 하루되세요 :)