안녕하세요 길벗수험서 운영팀입니다.
먼저 해당 문제들은 C언어를 기준으로 제작된 문제임을 알려드립니다.
다음은 C언어로 해당 코드를 수행한 결과입니다.
전치 연산자와 후치 연산자의 연속 적용은 C, C++과 Java, C#의 컴파일링 알고리즘이 조금 다릅니다.
(서로 차이점이 혼동될 여지가 있어 시험에 출제될 가능성은 거의 없어 보입니다.)
먼저 전자는 해설에서 설명드린 것과 같이 식 전체에 앞서 전치가 적용, 식 전체를 수행 후 후치가 적용됩니다.
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-03-16 11:29:03
안녕하세요 길벗수험서 운영팀입니다.
먼저 해당 문제들은 C언어를 기준으로 제작된 문제임을 알려드립니다.
다음은 C언어로 해당 코드를 수행한 결과입니다.
전치 연산자와 후치 연산자의 연속 적용은 C, C++과 Java, C#의 컴파일링 알고리즘이 조금 다릅니다.
(서로 차이점이 혼동될 여지가 있어 시험에 출제될 가능성은 거의 없어 보입니다.)
먼저 전자는 해설에서 설명드린 것과 같이 식 전체에 앞서 전치가 적용, 식 전체를 수행 후 후치가 적용됩니다.
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)
행복한 하루되세요 :)