for(i =1; i <= 5; ++i, hap += i)
System.out.print("합은%d %4d입니다.\n", i , hap);
부분에서 i=1 일때
i는 ++i로 인해 2가 되고 hap은 초기값인 0과 i=2를 더해서 2가 됩니다 따라서, '합은2 2입니다'라고 출력이 된다고 생각하여
'합은2 2입니다'부터 시작해야 한다고 생각합니다.
왜냐면 조건문에서 시작을 i가 1일때 시작해서 ++i에 의해서 2가 i에 저장이되고 그에 따라 hap이 진행된다고 생각하기 때문입니다.
또한, 문제에서int i=0,hap=0; 으로 했지만 조건문에서는 i=1부터 시작을 했기에 그에 따라 i는 2가 되고 hap은 2가 되어야하며 그러므로 출력도 '합은2 2입니다'부터 출력되어야 한다고 생각합니다.
또한 '합은1 0입니다'부터 출력되는거라면 ++i와 hap+=i 는 왜 진행되지 않는지 궁금합니다.
자세한 설명을 부탁드립니다
안녕하세요 길벗수험서 운영팀입니다.
for문의 수행 순서를 알아두실 필요가 있습니다.
for문을 간략화 시키면 다음과 같습니다.
for(①; ②; ③)
④;
for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
즉, ③에 해당하는 ++i, hap+=i 부분은 출력문이 처음 수행되는 1회의 ④에서는 한 번도 수행되지 않았으므로 "합은 1 0입니다"를 출력하게 되죠.
행복한 하루되세요 :)
-
관리자2020-05-12 10:28:13
안녕하세요 길벗수험서 운영팀입니다.
for문의 수행 순서를 알아두실 필요가 있습니다.
for문을 간략화 시키면 다음과 같습니다.
for(①; ②; ③)
④;
for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
즉, ③에 해당하는 ++i, hap+=i 부분은 출력문이 처음 수행되는 1회의 ④에서는 한 번도 수행되지 않았으므로 "합은 1 0입니다"를 출력하게 되죠.
행복한 하루되세요 :)