2024 정보 처리 산업 기사 필기 도서 249p 6번 문항을 보면 'a=1, b=2, c=3, d=4'라는 조건 아래
a+=++a%b++ ? c*d : b / c ; 에서 후치 연산자가 들어간 b++로 인해 ++a%b++ 까지는 b가 아직까지는 조건 그대로 2로 존재하여 해당 식의 계산 결과가 0 이고 따라서 거짓에 해당함으로 조건식 b/c를 실행해야함을 알 수 있습니다. 그렇다면 정리된 식은 a+= b/c 즉, a = a + b/c 인데 여기서 앞에 식에서 존재했지만 적용되지 않았던 후치 연산자 ++가 적용되어 b가 3이 되어 a = a + 3/3이고 a는 이전에 있었던 전치 연산자 ++ 가 적용되어 2가 되고 따라서 a = 2 + 1 임을 알 수 있습니다.
여기서, 저는 후치 연산자의 개념을 후치 연산자가 처음 등장한 연산에서는 적용되지 않고 그 뒤에 나타나는 연산에서부터 증감 연산자로서 적용된다고 이해했었는데
2024 정보 처리 산업 기사 필기 도서 251p 2번 문항을 보면 'a=3, b=4, c=5, d=6'이라는 조건 아래
'd%b + ++a*c-- || c- --a>=10' 에서 연산자 우선순위에 따라 단항 연산자에 해당하는 증감 연산자 먼저 계산을 하면 a는 전치 연산자 ++와 --가 둘 다 존재하여 값에 변화 없이 그대로 3으로 계산됩니다. 그러면 우선 이를 풀어보자면 6%4 + 3*c-- || c- 3 >=10 이 되는데 3*c--에서 --는 후치 연산자이기에 해당 게산에서는 그대로 5가 되어 해당 식을 계산하면
2 + 3*5 || c-3 >= 10 이 되고 이를 계산하면 17 || c-3 >= 10 이 되는데 여기서 저는 위에서 이해한대로 앞에 c에 붙어있던 후치연산자 --가 적용되어 c가 1만큼 감소한 4가 되어
17 || 4-3 >= 10 이 되고 4 -3 >=10 은 거짓이므로 0값을 갖게 되어 17 || 0 이고 0이 아닌 숫자 17은 참과 같으므로 둘 중 하나라도 참이면 참인 연산자 ||로 인해 참에 해당하는 1이 나와 답이 1이라고 판단했었는데, 정답 해설에는 뒤에 나오는 c - --a >=10 의 결과가 제가 계산한 4 -3 >= 10 이 아니라 후치 연산자가 적용되지 않은 5-3 >= 10으로 나와있다는 것을 확인했습니다.
이로 인해 저는 후치 연산자가 언제 적용되는가에 대해 의문이 들었는데 해당 문제를 예시로 들어서 설명해주시면 감사하겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
후치 연산자가 많이 햇갈리는 부분입니다.
먼저 C언어를 기준으로 한 선치 후치 연산자 계산 방식임을 알려드립니다.
후치 연산자는 하나의 식이 수행된 후에 적용됩니다.
먼저 교재 249페이지 6번 문항의 경우 삼항 연산자(조건?결과1:결과2)에서는 각 항이 별개의 식에 해당합니다.
즉 하나의 식이 수행된 후에 적용되는 후치 연산자는 삼항연산자의 '조건'부가 끝났을 때
후치 연산자(b++)가 적용된 후 '결과1' 또는 '결과2'로 가게 되는 것이죠.
반면 교재 251페이지 2번 문항의 경우 식 전체가 하나의 식으로 구성되어 있습니다.
때문에 c--는 이 식 전체가 끝날 때까지 1감소가 적용되는 일은 없으며
식 전체가 끝난후 1감소가 됩니다
열심히 공부하셔서 합격하시길 기원하겠습니다.
행복한 하루되세요 :)
-
관리자2024-06-05 20:21:06
안녕하세요 길벗수험서 운영팀입니다.
후치 연산자가 많이 햇갈리는 부분입니다.
먼저 C언어를 기준으로 한 선치 후치 연산자 계산 방식임을 알려드립니다.
후치 연산자는 하나의 식이 수행된 후에 적용됩니다.
먼저 교재 249페이지 6번 문항의 경우 삼항 연산자(조건?결과1:결과2)에서는 각 항이 별개의 식에 해당합니다.
즉 하나의 식이 수행된 후에 적용되는 후치 연산자는 삼항연산자의 '조건'부가 끝났을 때
후치 연산자(b++)가 적용된 후 '결과1' 또는 '결과2'로 가게 되는 것이죠.
반면 교재 251페이지 2번 문항의 경우 식 전체가 하나의 식으로 구성되어 있습니다.
때문에 c--는 이 식 전체가 끝날 때까지 1감소가 적용되는 일은 없으며
식 전체가 끝난후 1감소가 됩니다
열심히 공부하셔서 합격하시길 기원하겠습니다.
행복한 하루되세요 :)