java 쪽 예상문제를 풀다가 부족한 부분이 있어서 질문드립니다.
for문에서
int=0, hap=0 일때
①. for(i=1; i<=5; ++i)
hap+=i;
System.out.printf("%d, %d", i, hap)
와
②. for(i=1; i<=5; ++i, hap+=i);
System.out.printf("%d, %d", i, hap)
의 결과값의 차이가 어떻게 나는지 궁금합니다.
계산과정의 차이를 설명해주시면 정말 감사하겠습니다.
안녕하세요.
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-21 09:18:33
안녕하세요.
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이 됩니다.
오늘도 즐거운 하루 되세요.