책 내용 질문하기
46p 문제2
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
46
조회수
198
작성일
2020-03-04
작성자
탈퇴*원
첨부파일

문제 2번에 번호1번

a =2 

a = ++a + ++a 

 

결과 8로 설명되어 있습니다.

C#, 자바에서는 7로 결과가나오고

C, C++ 에서는 8로 결과가 나옵니다. 

차이가 무엇이고, 언어(컴파일러)가 설정되어있지 않다면

난해한 문제인데 명확한 답변 부탁드립니다.

답변
2020-03-04 11:10:44

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

 

먼저 해당 문제들은 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-04 11:10:44

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

     

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

     

    행복한 하루되세요 :)

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