111페이지25번에서
i=1부터 시작하는데 i=1 일때 hap+=i를 실행하니깐 hap=1일 때가 있지 않나요 ?
안녕하세요.
반복문 수행 문장이 반복문 실행 문장에 있는 경우와 증가값 부분에 , 연산자로 연결되어 있는 경우 실행 과정에 차이로 인해 다를 수 있습니다.
아래 내용을 확인해 보세요.
for(i=1; i<=5; ++i)
hap+=i;
System.out.printf("%d, %d", i, hap)
위 코드를 수행하면
i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 1이 됩니다.
i는 증가값이 적용되어 2를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 3이 됩니다.
i는 증가값이 적용되어 3을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 6이 됩니다.
i는 증가값이 적용되어 4를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 10이 됩니다.
i는 증가값이 적용되어 5를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 15가 됩니다.
i는 증가값이 적용되어 6를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.
i는 6, hap은 15가 됩니다.
for(i=1; i<=5; ++i, hap+=i);
System.out.printf("%d, %d", i, hap)
위 코드를 수행하면
i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없습니다. for문 바로 뒤에 ; 이 있기 때문입니다.
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 2가 됩니다. 이어서 hap에 i가 누적되어 hap은 2가 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 3이 됩니다. 이어서 hap에 i가 누적되어 hap은 5가 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 4가 됩니다. 이어서 hap에 i가 누적되어 hap은 9가 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 5가 됩니다. 이어서 hap에 i가 누적되어 hap은 14 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 6이 됩니다. 이어서 hap에 i가 누적되어 hap은 20이 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.
i는 6, hap은 20이 됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-23 10:25:23
안녕하세요.
반복문 수행 문장이 반복문 실행 문장에 있는 경우와 증가값 부분에 , 연산자로 연결되어 있는 경우 실행 과정에 차이로 인해 다를 수 있습니다.
아래 내용을 확인해 보세요.
for(i=1; i<=5; ++i)
hap+=i;
System.out.printf("%d, %d", i, hap)
위 코드를 수행하면
i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 1이 됩니다.
i는 증가값이 적용되어 2를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 3이 됩니다.
i는 증가값이 적용되어 3을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 6이 됩니다.
i는 증가값이 적용되어 4를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 10이 됩니다.
i는 증가값이 적용되어 5를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 아래 문장을 수행합니다.
hap에 i가 누적되어 hap은 15가 됩니다.
i는 증가값이 적용되어 6를 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.
i는 6, hap은 15가 됩니다.
for(i=1; i<=5; ++i, hap+=i);
System.out.printf("%d, %d", i, hap)
위 코드를 수행하면
i는 초기값으로 1을 갖습니다. 그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없습니다. for문 바로 뒤에 ; 이 있기 때문입니다.
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 2가 됩니다. 이어서 hap에 i가 누적되어 hap은 2가 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 3이 됩니다. 이어서 hap에 i가 누적되어 hap은 5가 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 4가 됩니다. 이어서 hap에 i가 누적되어 hap은 9가 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 5가 됩니다. 이어서 hap에 i가 누적되어 hap은 14 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하므로 반복 문장을 수행합니다. 하지만 수행할 문장이 없으므로
증가값 부분에 ++i와 hap+=i가 있으므로 순차적으로 하나씩 수행합니다.
먼저 i가 증가되어 i는 6이 됩니다. 이어서 hap에 i가 누적되어 hap은 20이 됩니다.
그런 다음 종료값(i<=5)과 비교하여 조건을 만족하지 않으므로 반복문을 빠져나와 printf문장을 수행합니다.
i는 6, hap은 20이 됩니다.
오늘도 즐거운 하루 되세요.