책 내용 질문하기
어제 질문드린것 다시 질문드립니다
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
조회수
47
작성일
2018-07-25
작성자
탈퇴*원
첨부파일

어제 답변에서 C언어 코드에서 a, k 변수 모두 int 형 변수이고 a = k - k/4 * 4; 일 때

/보다 *의 우선순위가 커서 a = k - k/16; 이라고 하셨는데

주어진 식은 k를 4로 나눈 나머지를 a에 저장하는 것 이므로 k/4 의 정수부분을 취한 다음 4를 곱하는거 아닌가요?

그리고 a = k - k/16으로 만드려면 4*4부분에 괄호()를 씌워야하는거 같은데

답변
2018-07-26 09:36:16

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

지난 답변에서 결합규칙과 우선순위의 착오로 인해 잘못된 답변으로 착오를 드린 점 사과드립니다.

C언어 사칙연산에서 연산자 우선순위에 따라 순서대로 연산되나, 산술 연산자 *, /, %는 결합규칙에 따라 좌측에서 우측 순대로 연산됩니다.

"a = k - k / 4 * 4" 에서는 k가 30라고 가정했을 때,

a = 30 - 30 / 4 * 4

= 30 - 7 * 4 ------- 30 / 4 = 7.5 이지만 30을 저장하고 있는 k가 정수형 변수이므로 소수점 자리는 생략됩니다.

= 30 - 28

= 2

가 됩니다.

행복한 하루되세요.^^

  • *
    2018-07-26 09:36:16

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

    지난 답변에서 결합규칙과 우선순위의 착오로 인해 잘못된 답변으로 착오를 드린 점 사과드립니다.

    C언어 사칙연산에서 연산자 우선순위에 따라 순서대로 연산되나, 산술 연산자 *, /, %는 결합규칙에 따라 좌측에서 우측 순대로 연산됩니다.

    "a = k - k / 4 * 4" 에서는 k가 30라고 가정했을 때,

    a = 30 - 30 / 4 * 4

    = 30 - 7 * 4 ------- 30 / 4 = 7.5 이지만 30을 저장하고 있는 k가 정수형 변수이므로 소수점 자리는 생략됩니다.

    = 30 - 28

    = 2

    가 됩니다.

    행복한 하루되세요.^^

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