책 내용 질문하기
문제 1 1번
도서
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서]
페이지
561
조회수
268
작성일
2020-04-07
작성자
탈퇴*원
첨부파일

a = ++a ++a;인데

a가 2이므로

2를 전치한 3,

3을 전치한 4해서

3+4 = 7 이 맞는거 아닌가요?

또한 이 결과값이 언어 또는 컴파일러마다 값이 다른 것 같은데
어느 언어 또는 컴파일러를 기준으로 해야 하나요? 

답변
2020-04-07 10:35:36

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

 

먼저 해당 문제들은 C언어를 기준으로 제작된 문제임을 알려드립니다.

 

말씀하신대로 전치 연산자와 후치 연산자의 연속 적용은 C와 Java의 컴파일링 알고리즘이 조금 다릅니다.

(서로 차이점이 혼동될 여지가 있어 시험에 출제될 가능성은 거의 없어 보입니다.)

 

먼저 전자는 해설에서 설명드린 것과 같이 식 전체에 앞서 전치가 적용, 식 전체를 수행 후 후치가 적용됩니다.

a=a+1;

a=a+1; 

a=a+a;

라는 식과 동일하게 연산되죠.

 

java의 풀이는 말씀하시는 것과 같습니다.

이에 따라 561쪽의 5번도 정답은 동일하나 java의 경우 풀이 방식이 달라집니다. 

 

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

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

 

행복한 하루되세요 :)

  • 관리자
    2020-04-07 10:35:36

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

     

    먼저 해당 문제들은 C언어를 기준으로 제작된 문제임을 알려드립니다.

     

    말씀하신대로 전치 연산자와 후치 연산자의 연속 적용은 C와 Java의 컴파일링 알고리즘이 조금 다릅니다.

    (서로 차이점이 혼동될 여지가 있어 시험에 출제될 가능성은 거의 없어 보입니다.)

     

    먼저 전자는 해설에서 설명드린 것과 같이 식 전체에 앞서 전치가 적용, 식 전체를 수행 후 후치가 적용됩니다.

    a=a+1;

    a=a+1; 

    a=a+a;

    라는 식과 동일하게 연산되죠.

     

    java의 풀이는 말씀하시는 것과 같습니다.

    이에 따라 561쪽의 5번도 정답은 동일하나 java의 경우 풀이 방식이 달라집니다. 

     

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

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

     

    행복한 하루되세요 :)

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