1. 1권 45페이지 7번문제 해설에서 2번째 계산을 하는 과정인 -12%(-5)를 할 때 답이 -2 라고 적혀있는데 왜 -2인지 궁금합니다. 양수2가 아닌 이유가 있나요? 라고 몇일전에 질문을하였고
[1]
(1) / (2) = (3) .... (4)
1을 목적수, 2를 나눔수, 3을 몫, 4를 나머지로 칭하겠습니다.
C 언어에서 음수의 나머지 연산은 나눔수*몫이 목적수보다 작지 않도록 구한 후, 그 나머지를 구합니다.
즉, -12/-5 에서 -12보다 작지 않은 -5*몫이 되려면 몫은 2가 되어야 하죠. (-10)
-12 / -5 = 2 ...
목적수 = 나눔수 * 몫 + 나머지
라는 기본 공식을 따왔을 때 나머지를 구한다면, 나머지는 -2가 됩니다.
-12 = -5 * 2 + (-2)
이렇게 답해주셨는데 잘 이해가 가지 않아서 다시 문의드립니다. 답변해주신 부분 중 2번째 문단에서 질문이 있습니다. 나눔수*몫이 목적수보다 작지 않도록 해야 한다고 하셨는데 그러면 몫이 2말고도 -2도 되지않나요? c언어에서 음수의 나눗셈의 몫 구하는 방법을 잘 모르겠습니다.
2. 1권 54페이지에서 문제 2번문제 풀이과정의 7번부분에서 c- --a계산부분을 잘모르겠습니다. 여기서 c와 a의 값은 각각 무엇인지 궁금합니다. 제가 생각했을때는 c는 4고 a는 2가 나온다고 생각했는데 잘모르겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
[1]
몫이 -2인 경우 검산을 해보죠.
-12 = -5 * -2 + 나머지
이런 식이 형성됩니다.
이경우 -5*-2의 값은 양수 +10이고 양수 10은 음수 -12보다 큰 수죠.
이렇게되면 나머지는 -22가 되어 잘못된 결과가 나오게 되죠.
(음수 나머지 연산에서는 나머지가 나눔수보다 작아야 합니다.)
[2]
c언어에서 전치연산과 후치연산을 계산시, 전체 식이 수행되기전 모든 전치연산을 수행한 후에 식이 수행됩니다.
(후치연산은 전체 식이 수행된 후에 적용되죠.)
즉 해당 식은 다음과 같이 바꿔볼 수 있습니다.
1. a = a + 1;
2. a = a - 1;
3. d % b + a * c || c - a >= 10
4. c = c - 1;
전치연산자 ++a와 --a가 식에 들어가기 전에 수행되어 결국 3이라는 값을 계속 갖고 있게 되고,
c는 후치 연산이므로 3번의 식이 모두 수행된 이후에야 적용되기 때문에 식에 아무런 영향을 주지 않게 됩니다.
행복한 하루되세요 :)
-
관리자2020-04-08 11:41:44
안녕하세요 길벗수험서 운영팀입니다.
[1]
몫이 -2인 경우 검산을 해보죠.
-12 = -5 * -2 + 나머지
이런 식이 형성됩니다.
이경우 -5*-2의 값은 양수 +10이고 양수 10은 음수 -12보다 큰 수죠.
이렇게되면 나머지는 -22가 되어 잘못된 결과가 나오게 되죠.
(음수 나머지 연산에서는 나머지가 나눔수보다 작아야 합니다.)
[2]
c언어에서 전치연산과 후치연산을 계산시, 전체 식이 수행되기전 모든 전치연산을 수행한 후에 식이 수행됩니다.
(후치연산은 전체 식이 수행된 후에 적용되죠.)
즉 해당 식은 다음과 같이 바꿔볼 수 있습니다.
1. a = a + 1;
2. a = a - 1;
3. d % b + a * c || c - a >= 10
4. c = c - 1;
전치연산자 ++a와 --a가 식에 들어가기 전에 수행되어 결국 3이라는 값을 계속 갖고 있게 되고,
c는 후치 연산이므로 3번의 식이 모두 수행된 이후에야 적용되기 때문에 식에 아무런 영향을 주지 않게 됩니다.
행복한 하루되세요 :)