책 내용 질문하기
46쪽 문제 2)1번
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
46
조회수
185
작성일
2020-04-12
작성자
탈퇴*원
이해가 안가서 자바 돌려보니, 7로 나오는데 마지막에 3번째 연산이 되는 이유가 무엇인가요? 참고로 37페이지 표준 입력에 자료 nextInt 오타 있습니다.
답변
2020-04-13 19:46:17

안녕하세요 길벗수험서 운영팀입니다.

 

먼저 해당 문제들은 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-04-13 19:46:17

    안녕하세요 길벗수험서 운영팀입니다.

     

    먼저 해당 문제들은 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)

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.