책 내용 질문하기
567pg 문제 10번 관련 문의드립니다.
도서
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서]
페이지
567
조회수
274
작성일
2020-03-04
작성자
정*영
첨부파일

 

 

b+=c*=a<<2; 

 

에서 연산자 우선순위가 높은 순으로 증감 - 산술(*/) - 산술(+-) - 시프트 - 관계 순이므로

 

산술 *

산술 +

시프트 순으로 계산을 해야하는데

 

그러면,

 

(b+(c*a))<<2 라서 

 

(3+(4*2))<<2 = 44 아닌가요?

 

 

해설에는 a<<2를 가장 먼저 수행하더라구요~

제가 해설을 잘못 해석한걸까요? ;ㅅ;

답변
2020-03-05 13:48:40

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

 

b += c *= a<<2

 

여기에서 +=과 *=는 산술이 아닌 대입 연산자입니다.

순서 연산자를 제외하고는 가장 마지막에 우측에서 좌측 순서로(결합규칙) 연산해줘야 하죠. 

즉 괄호로 구분하면 아래와 같이 됩니다. 

 

b += (c *= (a<<2)) 

 

대입 연산자는 a+=1을 a=a+1과 같이 바꿀 수 있다는 것을 고려하면 식은 다른 형태로도 풀어볼 수 있습니다.

 

b = b + (c = c * (a<<2))

 

이렇게 말이죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-03-05 13:48:40

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

     

    b += c *= a<<2

     

    여기에서 +=과 *=는 산술이 아닌 대입 연산자입니다.

    순서 연산자를 제외하고는 가장 마지막에 우측에서 좌측 순서로(결합규칙) 연산해줘야 하죠. 

    즉 괄호로 구분하면 아래와 같이 됩니다. 

     

    b += (c *= (a<<2)) 

     

    대입 연산자는 a+=1을 a=a+1과 같이 바꿀 수 있다는 것을 고려하면 식은 다른 형태로도 풀어볼 수 있습니다.

     

    b = b + (c = c * (a<<2))

     

    이렇게 말이죠.

     

    행복한 하루되세요 :)

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