2022정보처리산업기사 실기 문제집에서 254p 32번 문제에서 반복문 1회차에서 i값은 1인데 왜 hap값은 0인지 궁금합니다.
또한 반복문 나와서도 증가하는 경우가 있고 그냥 반복문에 있는 조건대로 끝나는 경우도 있는데 차이점을 모르겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
for(i=1; i<=5; ++i, hap+=i)
System.out.printf("합은%d %4d입니다.\n", i, hap);
위의 코드를 아래로 단순화 시켜 보죠.
for(①; ②; ③)
④;
해당 문제에서 내부의 출력문은 i가 1일 때부터, 5일 때까지 총 5회 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
처음 수행될 시 증가값에 해당하는 부분(++i, hap+=i)은 수행되지 않으므로 hap은 초기값인 0인 상태 그대로 출력됩니다.
'합은 1 0입니다.'
간혹 i가 전치연산자이므로 먼저 계산되어야 한다고 생각하시는 분들이 있으나, 전치후치 연산이 먼저 또는 나중에 수행되기 위해서는 먼저 '식'이 수행되어야 하고, 둘째로 하나의 '식'에 대해서만 전 후가 적용된다는 것입니다.
식은 세미콜론; 또는 쉼표, 로 구분되며 for문은 일반적으로 3개의 식으로 구성됩니다.
for ( 식1; 식2; 식3 )
해당 문제의 경우는 쉼표까지 사용하여 식3을 두개로 나눔으로써
for ( 식1; 식2; 식3, 식4) 로 되었습니다.
여기서 ++i 는 홀로 수행되는 단일 식으로 식 수행 전에 수행하든, 후에 수행하든 결과가 동일해집니다.
즉, 이 ++i는 i++로 교체되든, i=i+1 또는 i+=1로 교체되든 결과에 어떠한 영향도 주지 못한다는 것입니다.
행복한 하루되세요 :)
-
관리자2022-04-06 10:09:43
안녕하세요 길벗수험서 운영팀입니다.
for(i=1; i<=5; ++i, hap+=i)
System.out.printf("합은%d %4d입니다.\n", i, hap);
위의 코드를 아래로 단순화 시켜 보죠.
for(①; ②; ③)
④;
해당 문제에서 내부의 출력문은 i가 1일 때부터, 5일 때까지 총 5회 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
처음 수행될 시 증가값에 해당하는 부분(++i, hap+=i)은 수행되지 않으므로 hap은 초기값인 0인 상태 그대로 출력됩니다.
'합은 1 0입니다.'
간혹 i가 전치연산자이므로 먼저 계산되어야 한다고 생각하시는 분들이 있으나, 전치후치 연산이 먼저 또는 나중에 수행되기 위해서는 먼저 '식'이 수행되어야 하고, 둘째로 하나의 '식'에 대해서만 전 후가 적용된다는 것입니다.
식은 세미콜론; 또는 쉼표, 로 구분되며 for문은 일반적으로 3개의 식으로 구성됩니다.
for ( 식1; 식2; 식3 )
해당 문제의 경우는 쉼표까지 사용하여 식3을 두개로 나눔으로써
for ( 식1; 식2; 식3, 식4) 로 되었습니다.
여기서 ++i 는 홀로 수행되는 단일 식으로 식 수행 전에 수행하든, 후에 수행하든 결과가 동일해집니다.
즉, 이 ++i는 i++로 교체되든, i=i+1 또는 i+=1로 교체되든 결과에 어떠한 영향도 주지 못한다는 것입니다.
행복한 하루되세요 :)