책 내용 질문하기
문제 문의
도서
2020 시나공 정보처리기능사 실기 : NCS 기반 전면 개편
페이지
46
조회수
215
작성일
2020-03-14
작성자
탈퇴*원
첨부파일
1권 46페이지 문제2번에 1번문제 질문드립니다 7인줄 알았는데 8이길래 문제해설을 봐도 이해가 안가서 자바로 코드 작성 후 컴파일했더니 7이 나왔습니다 int a = 2; a= a++ + a++; 출력하면 7이 나와요 3+4=7 아닌가요 a++해서 3이되고 a++해서 4가되서 a=a+a?라는게 말이되나요? 컴퓨터도 말이안된다는데요
답변
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번도 정답은 동일하나 풀이 방식이 달라집니다.

 

첫번째 ++c5, 두번째 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번도 정답은 동일하나 풀이 방식이 달라집니다.

     

    첫번째 ++c5, 두번째 c++5, 세번째 ++c는 두번째의 후치연산자와 합쳐져서 7, 네번째의 c++7이 되어 정답인 24가 나오게 되죠.

    (마지막에 c는 네번째의 후치연산자가 적용되어 c=8)

     

    행복한 하루되세요 :)

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