안녕하세요 길벗수험서 운영팀입니다.
먼저 해당 문제들은 C언어를 기준으로 제작된 문제임을 알려드립니다.
전치 연산자와 후치 연산자의 연속 적용은 C와 Java의 컴파일링 알고리즘이 조금 다릅니다.
(서로 차이점이 혼동될 여지가 있어 시험에 출제될 가능성은 거의 없어 보입니다.)
먼저 전자는 해설에서 설명드린 것과 같이 식 전체에 앞서 전치가 적용, 식 전체를 수행 후 후치가 적용됩니다.
Java는 식 전체가 아닌 수행 순서(전차 후치 연산자 수행 순서를 제외한)에 맞춰 전치 후치가 개별로 적용됩니다.
즉, a = ++a + ++a; 가 있을 때, 앞의 a를 수행할 때는 전치연산자 ++이 적용되어 3이 되고, 뒤의 a를 수행할 때 다시 전치연산자 ++을 만나 4가 되어, 각각의 수를 더하는 방식이죠. (3+4=7)
이에 따라 561쪽의 5번도 정답은 동일하나 풀이 방식이 달라집니다.
첫번째 ++c는 5, 두번째 c++은 5, 세번째 ++c는 두번째의 후치연산자와 합쳐져서 7, 네번째의 c++은 7이 되어 정답인 24가 나오게 되죠.
(마지막에 c는 네번째의 후치연산자가 적용되어 c=8)
행복한 하루되세요 :)
-
관리자2020-05-25 13:33:01
안녕하세요 길벗수험서 운영팀입니다.
먼저 해당 문제들은 C언어를 기준으로 제작된 문제임을 알려드립니다.
전치 연산자와 후치 연산자의 연속 적용은 C와 Java의 컴파일링 알고리즘이 조금 다릅니다.
(서로 차이점이 혼동될 여지가 있어 시험에 출제될 가능성은 거의 없어 보입니다.)
먼저 전자는 해설에서 설명드린 것과 같이 식 전체에 앞서 전치가 적용, 식 전체를 수행 후 후치가 적용됩니다.
Java는 식 전체가 아닌 수행 순서(전차 후치 연산자 수행 순서를 제외한)에 맞춰 전치 후치가 개별로 적용됩니다.
즉, a = ++a + ++a; 가 있을 때, 앞의 a를 수행할 때는 전치연산자 ++이 적용되어 3이 되고, 뒤의 a를 수행할 때 다시 전치연산자 ++을 만나 4가 되어, 각각의 수를 더하는 방식이죠. (3+4=7)
이에 따라 561쪽의 5번도 정답은 동일하나 풀이 방식이 달라집니다.
첫번째 ++c는 5, 두번째 c++은 5, 세번째 ++c는 두번째의 후치연산자와 합쳐져서 7, 네번째의 c++은 7이 되어 정답인 24가 나오게 되죠.
(마지막에 c는 네번째의 후치연산자가 적용되어 c=8)
행복한 하루되세요 :)