책 내용 질문하기
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))
이렇게 말이죠.
행복한 하루되세요 :)