책 내용 질문하기
이게 맞는건가요
도서
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서]
페이지
607
조회수
494
작성일
2020-05-22
작성자
탈퇴*원
첨부파일
1번 보면 a가 2일때 a= ++a + ++a 의 식에대한 값이 8 이나온다고 설명이 되어있는데 직접 코딩해보면 답이 7이 나옵니다 뭐가 맞는건가요?
답변
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)

 

행복한 하루되세요 :)


 

  • 관리자
    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)

     

    행복한 하루되세요 :)


     

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