책 내용 질문하기
2017년 1회 정보처리기사 실기 모의고사 D형 문제 5번 질문 드립니다.
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
조회수
55
작성일
2017-06-04
작성자
탈퇴*원
첨부파일

연산자의 우선순위에 따른 C언어 코드 계산문제 풀어보았는데,

자료 해설과 디버깅을 살펴보아도 이해가 잘 안갑니다.

초기값부터 시작하여 A , B, C 각 값들의 변화, HAP의 변화 등 구체적이고 상세하게 설명 부탁드립니다.

답변
2017-06-05 11:00:16

안녕하세요.

hap += a++ - --b % c

위 수식을 우선순위에 따라 괄호로 묶으면 아래와 같습니다.

hap = hap + (a++ - (--b % c))

----------

------------------

----------------------------

맨 안쪽의 ① 부분부터 계산을 수행합니다.

--b는 전치 연산자로 b값을 우선 --(1감소) 한 후 연산을 수행합니다.

b는 4인데 --(1감소) 하므로 b는 3이 됩니다.

위 수식을 만나기 전에 c++; 에 의해 c는 1이 된 상태이므로

3 % 1 에서 %는 나머지를 구하는 연산자 이므로 3을 1로 나누면, 몫은 3, 나머지는 0이 됩니다.

①은 0 입니다.

② 부분의 계산을 수행하면

a++ - 0

a++은 후치 연산이므로 연산을 먼저 수행한 후 ++(1증가) 합니다.

a는 3이므로

3 - 0 = 3이 됩니다. 연산이 수행됐으므로 a는 ++(1증가)되어 4가 됩니다.

②는 3입니다.

③ 부분의 계산을 수행하면

hap + 3

hap은 0이므로 0+3은 3입니다.

그러므로 hap은 3입니다.

위와 같은 과정으로 c가 4보다 작은 동안 반복을 수행하면 디버깅 표의 내용과 같이 각 변수의 값이 변화되어

최종적으로 hap은 17이 됩니다.

오늘도 즐거운 하루 되세요.

  • *
    2017-06-05 11:00:16

    안녕하세요.

    hap += a++ - --b % c

    위 수식을 우선순위에 따라 괄호로 묶으면 아래와 같습니다.

    hap = hap + (a++ - (--b % c))

    ----------

    ------------------

    ----------------------------

    맨 안쪽의 ① 부분부터 계산을 수행합니다.

    --b는 전치 연산자로 b값을 우선 --(1감소) 한 후 연산을 수행합니다.

    b는 4인데 --(1감소) 하므로 b는 3이 됩니다.

    위 수식을 만나기 전에 c++; 에 의해 c는 1이 된 상태이므로

    3 % 1 에서 %는 나머지를 구하는 연산자 이므로 3을 1로 나누면, 몫은 3, 나머지는 0이 됩니다.

    ①은 0 입니다.

    ② 부분의 계산을 수행하면

    a++ - 0

    a++은 후치 연산이므로 연산을 먼저 수행한 후 ++(1증가) 합니다.

    a는 3이므로

    3 - 0 = 3이 됩니다. 연산이 수행됐으므로 a는 ++(1증가)되어 4가 됩니다.

    ②는 3입니다.

    ③ 부분의 계산을 수행하면

    hap + 3

    hap은 0이므로 0+3은 3입니다.

    그러므로 hap은 3입니다.

    위와 같은 과정으로 c가 4보다 작은 동안 반복을 수행하면 디버깅 표의 내용과 같이 각 변수의 값이 변화되어

    최종적으로 hap은 17이 됩니다.

    오늘도 즐거운 하루 되세요.

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