cal함수가 3->2로변화는데 왜변화하는지알려주세요 그리고 이문제 전체풀의과정도알려주세요
안녕하세요. 길벗 수험서 운영팀입니다.
해당 코드는 메인함수의 경우 i가 0~3까지 4회 반복하면서 cal(i) 함수를 호출하여 변환된 a값을 b에 누적시키는 Java 코드입니다.
이 코드에서 주의할 점은
1. a가 전역변수 라는 점.
2. b가 지역변수 라는 점.
3. 사용자정의함수 cal()은 void 속성이기 때문에 반환값이 없다는 점
4. a*=++b와 a-=--b가 a = a * ++b와 a = a - --b라는 점
정도 입니다.
1. i가 0, 1일 때 cal함수를 호출하면 a*=++b를 계산하여 0에서는 a가 1이 되고, 이를 b에 누적하여 b는 1이 됩니다.
2. 1에서는 a가 2가 되고, 이를 b에 누적하여 b는 3이 되죠.
3. i가 2, 3일 때 cal함수를 호출하면 a-=--b를 계산하여 2에서는 a가 1이 되고, 이를 b에 누적하여 b는 4가 됩니다.
4. 3에서는 a가 -1이 되고, 이를 b에 누적하여 b는 3이 되죠.
(위의 b는 main함수의 변수 b입니다.)
질문하신 3->2가 되는 과정은 위 4번에서 a -= --b를 수행할 때 입니다. 4번을 수행할 때 b에 저장되어 있는 값은 3입니다(cal(i)). 전치수식인 --b를 수행하면 2가 되는 것이죠. 이것을 다시 a에서 빼게 되면 a가 -1이 됩니다.
디버깅표와 함께 코드를 다시 한 번 순서대로 따라가 보세요.
그럼에도 이해가 되지 않는 부분이 있다면 구체적으로 질문해주시면 자세한 안내가 가능합니다.
행복한 하루되세요.^^
-
*2018-10-05 11:13:18
안녕하세요. 길벗 수험서 운영팀입니다.
해당 코드는 메인함수의 경우 i가 0~3까지 4회 반복하면서 cal(i) 함수를 호출하여 변환된 a값을 b에 누적시키는 Java 코드입니다.
이 코드에서 주의할 점은
1. a가 전역변수 라는 점.
2. b가 지역변수 라는 점.
3. 사용자정의함수 cal()은 void 속성이기 때문에 반환값이 없다는 점
4. a*=++b와 a-=--b가 a = a * ++b와 a = a - --b라는 점
정도 입니다.
1. i가 0, 1일 때 cal함수를 호출하면 a*=++b를 계산하여 0에서는 a가 1이 되고, 이를 b에 누적하여 b는 1이 됩니다.
2. 1에서는 a가 2가 되고, 이를 b에 누적하여 b는 3이 되죠.
3. i가 2, 3일 때 cal함수를 호출하면 a-=--b를 계산하여 2에서는 a가 1이 되고, 이를 b에 누적하여 b는 4가 됩니다.
4. 3에서는 a가 -1이 되고, 이를 b에 누적하여 b는 3이 되죠.
(위의 b는 main함수의 변수 b입니다.)
질문하신 3->2가 되는 과정은 위 4번에서 a -= --b를 수행할 때 입니다. 4번을 수행할 때 b에 저장되어 있는 값은 3입니다(cal(i)). 전치수식인 --b를 수행하면 2가 되는 것이죠. 이것을 다시 a에서 빼게 되면 a가 -1이 됩니다.
디버깅표와 함께 코드를 다시 한 번 순서대로 따라가 보세요.
그럼에도 이해가 되지 않는 부분이 있다면 구체적으로 질문해주시면 자세한 안내가 가능합니다.
행복한 하루되세요.^^