p.102 문제 2번의 후치연산자에 대해 질문드립니다.
코딩을 보면
int a= 12, b= 8, c=2, d=3;
a /= b++ - c * d;
a를 결과로 출력하는 문제인데
답지에 보면 a = 12/ (8 -(2*3))
으로 계산하고 a의 결과는 6이라고 나와있습니다.
후치연산자 b++이 왜 바로 8로 바뀌는 건가요? b++의 의미가 b=b+1이라고 한다면 9가 되어야 하는거 아닌가요?
그리고 후치연산자 개념이 연산한후 1 의 증가라고 한다면 a의 연산을 다 마친후 +1이 되어야 하니까
답은 7이 아닌가요?
안녕하세요.
후치연산은 우선 변수의 값을 사용하고 나서 해당 변수의 값을 증가시킵니다.
a /= b++ - c * d;
는 a = a / (b++ - c * d); 와 같고
연산자 우선 순위에 의해
a = a / (b++ - (c * d));와 같습니다.
결국 12 / 8 - (2 * 3) = 12 / 8 - 6 = 12 / 2 = 6
으로 a에 6이 저장된 후에 b의 값은 9로 변경됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-27 15:28:03
안녕하세요.
후치연산은 우선 변수의 값을 사용하고 나서 해당 변수의 값을 증가시킵니다.
a /= b++ - c * d;
는 a = a / (b++ - c * d); 와 같고
연산자 우선 순위에 의해
a = a / (b++ - (c * d));와 같습니다.
결국 12 / 8 - (2 * 3) = 12 / 8 - 6 = 12 / 2 = 6
으로 a에 6이 저장된 후에 b의 값은 9로 변경됩니다.
오늘도 즐거운 하루 되세요.