만약에 코드가
#include <stdio.h>
main()
{
int i=10, hap=0;
while(i>1)
{
i--; //---------------------------------------A
if(i%3==1) //--------------------------------------B
hap +=i;//-----------------------------------------C
} // ----------------------------------------D
printf("%d\n", hap);
}
다음과 같다면
A의 후치 연산은 어느 시점에 이루어지는지 궁금합니다
제가 이해한건 A줄에서 ;으로 분기가 되었기 떄문에
B부터 i에 1이 감소된 값으로 적용이 되어야 한다고 이해했는데
책에서 디버깅 표를 보니
C까지 연산을 모두 한 이후에 연산을 적용해서 i에서 1이 감소하는 것으로 판단하더리구요
정확히 어느 시점에 후치 연산이 이루어지는지 궁금합니다
안녕하세요 길벗수험서 운영팀입니다.
코드는 정확히 이해하셨습니다.
A에서 i--; 는 단일 수식으로 i=i-1;이 수행되는 것과 다를바가 없습니다.
B에서는 i가 감소한 값을 if문으로 수행하겠죠.
오해하신 것이 있다면 디버깅표를 읽거나 쓰는 방법입니다.
일반적으로 디버깅 표는 코드 내에 변화하는 변수들의 값을 차례대로 나열하는 것에 불과합니다.
책에서는 종종 수험자들의 이해를 돕기위해 회전수에 맞춰 값들을 배치해주고는 하지만, 이것은 특별한 경우에만 사용할 수 있습니다.
(회전수가 일정하거나 중복회전이 발생하는 않는 경우 또는 한 회전 내에서 변수의 변화가 적은 경우)
만약 [문제3] 해설의 디버깅표를 회전수에 맞춰 열을 배치하게 되면,
i hap
10 0
9
8
7 7
6
5
4 11
3
2
1 12
출력 : 12
이렇게 되겠지요.
행복한 하루되세요 :)
-
관리자2019-03-07 09:57:02
안녕하세요 길벗수험서 운영팀입니다.
코드는 정확히 이해하셨습니다.
A에서 i--; 는 단일 수식으로 i=i-1;이 수행되는 것과 다를바가 없습니다.
B에서는 i가 감소한 값을 if문으로 수행하겠죠.
오해하신 것이 있다면 디버깅표를 읽거나 쓰는 방법입니다.
일반적으로 디버깅 표는 코드 내에 변화하는 변수들의 값을 차례대로 나열하는 것에 불과합니다.
책에서는 종종 수험자들의 이해를 돕기위해 회전수에 맞춰 값들을 배치해주고는 하지만, 이것은 특별한 경우에만 사용할 수 있습니다.
(회전수가 일정하거나 중복회전이 발생하는 않는 경우 또는 한 회전 내에서 변수의 변화가 적은 경우)
만약 [문제3] 해설의 디버깅표를 회전수에 맞춰 열을 배치하게 되면,
i hap
10 0
9
8
7 7
6
5
4 11
3
2
1 12
출력 : 12
이렇게 되겠지요.
행복한 하루되세요 :)