문제에서 i가 8보다 작은경우 출력되는 i값과 j값을 찾는질문인데
i가 8일때 출력되는건 이해했는데 왜 그때 j값이 26이죠?
i가 출력되기 전 j값까지 처리를 해서 j값이 36으로 나와야 하는거 아닌가요 ??
이를테면, 73쪽 예제문제에서 i가 8대신 10보다 작은경우지만
초기값, 출력조건값 등 다른 조건식이 동일한 이 문제에서는
i값이 10일때 출력되고 10까지의 누적값인 55로 j값이 나온다고 하였습니다.
이부분이 너무 헷갈리네요..
안녕하세요.
디버깅을 수행하면서 각 코드를 하나 하나 따라가보면 이해가 쉽습니다.
i, j가 선언되면서 j에는 0이 초기화됩니다.
for문을 만나
i가 0으로 초기화됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 0이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 1이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 1이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 2가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 3이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 3이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 6이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 4가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 10이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 5가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 15가 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 6이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 21이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 7이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 28이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 8이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하지 않으므로 반복문을 빠져나옵니다.
printf를 만나 출력할 때 i는 현재 8이고 j는 현재 28인 상태입니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-23 09:32:05
안녕하세요.
디버깅을 수행하면서 각 코드를 하나 하나 따라가보면 이해가 쉽습니다.
i, j가 선언되면서 j에는 0이 초기화됩니다.
for문을 만나
i가 0으로 초기화됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 0이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 1이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 1이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 2가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 3이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 3이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 6이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 4가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 10이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 5가 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 15가 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 6이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 21이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 7이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하므로 반복문 안쪽 문장을 수행합니다.
j += i;가 수행되어 j에 i가 누적됩니다. j는 28이 됩니다.
반복문 종료 브래이스(})를 만나 for문의 시작 위치로 제어가 이동하여 증가값(i++)이 적용됩니다.
i는 8이 됩니다. 이어서 최종값(i<8)을 비교하여 조건을 만족하지 않으므로 반복문을 빠져나옵니다.
printf를 만나 출력할 때 i는 현재 8이고 j는 현재 28인 상태입니다.
오늘도 즐거운 하루 되세요.