91쪽 문제인대
해설이 473쪽에있습니다
while(*x < *y)
이줄에서
*x = 10
*y = 10 일때 while 문을 빠져나와서 printf줄로 갈텐데
왜 *z는 *z += *x; 를 수행한 55가 되는건가요?
while 문을 빠져나와 그 실행문을 실행하지않고
45인 상태로 printf 문으로 올라가야되는거아닌가요?
안녕하세요.
prnt 함수 부분이 수행될 때 값을 전달받아
*x는 0, *y는 10, *z는 0이 됩니다.
*x < *y, 즉 0 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 1이 됩니다.
*z = *z+*x; 에 의해 *z의 값은 1이 됩니다.
*x < *y, 즉 1 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 2가 됩니다.
*z = *z+*x; 에 의해 *z의 값은 3이 됩니다.
*x < *y, 즉 2 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 3이 됩니다.
*z = *z+*x; 에 의해 *z의 값은 6이 됩니다.
이와 같이 반복문 조건에서 비교되는 값은 실제 처리될 때의 값보다 1이 적습니다.
결국 마지막 바로 전 처리는 반복문을 반복한 후 *x의 값이 9일 때는
*x < *y, 즉 9 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 10이 됩니다.
*z = *z+*x; 에 의해 *z의 값은 55가 됩니다.
*x < *y, 즉 10 < 10은 No이므로 반복문을 수행하지 않고 돌아갑니다.
결국 반복문을 수행한 후에는 *x는 10이 되고 *z는 10이 누적된 55가 된 상태로 돌아갑니다.
왼쪽의 프리미엄존 - 토막강의 코너 상단에 등록된 "[정보처리 특강] 기출문제 & 예상문제 문제 풀이 강좌"를 클릭하시면 교재에 수록된 제2장 관련 기출문제와 예상문제 풀이 강좌를 시청할 수 있습니다.
오늘도 즐거운 하루 되세요.
-
*2017-08-22 09:11:31
안녕하세요.
prnt 함수 부분이 수행될 때 값을 전달받아
*x는 0, *y는 10, *z는 0이 됩니다.
*x < *y, 즉 0 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 1이 됩니다.
*z = *z+*x; 에 의해 *z의 값은 1이 됩니다.
*x < *y, 즉 1 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 2가 됩니다.
*z = *z+*x; 에 의해 *z의 값은 3이 됩니다.
*x < *y, 즉 2 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 3이 됩니다.
*z = *z+*x; 에 의해 *z의 값은 6이 됩니다.
이와 같이 반복문 조건에서 비교되는 값은 실제 처리될 때의 값보다 1이 적습니다.
결국 마지막 바로 전 처리는 반복문을 반복한 후 *x의 값이 9일 때는
*x < *y, 즉 9 < 10은 Yes이므로 반복문을 수행합니다.
++*x; 에 의해 *x의 값은 10이 됩니다.
*z = *z+*x; 에 의해 *z의 값은 55가 됩니다.
*x < *y, 즉 10 < 10은 No이므로 반복문을 수행하지 않고 돌아갑니다.
결국 반복문을 수행한 후에는 *x는 10이 되고 *z는 10이 누적된 55가 된 상태로 돌아갑니다.
왼쪽의 프리미엄존 - 토막강의 코너 상단에 등록된 "[정보처리 특강] 기출문제 & 예상문제 문제 풀이 강좌"를 클릭하시면 교재에 수록된 제2장 관련 기출문제와 예상문제 풀이 강좌를 시청할 수 있습니다.
오늘도 즐거운 하루 되세요.