안녕하세요 1권 45페이지와 46페이지 질문이 있습니다.
1. 45페이지 7번문제 해설에서 2번째 계산을 하는 과정인 -12%(-5)를 할 때 답이 -2 라고 적혀있는데 왜 -2인지 궁금합니다. 양수2가 아닌 이유가 있나요?
2. 46페이지 문제2번의 1번문제 해설을 봐도 왜 답이 7이아닌지 궁금합니다. 해설에서 3의 연산이 a+a와 같다고 나와있는데 잘 이해가 안갑니다.
3. 마찬가지로 46페이지 문제2번에 5번 문제도 2번문제처럼 답이 22가 아니고 24인지 모르겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
[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]
C언어에서는 전체 식의 수행 전, 후에 전치연산자와 후치 연산자가 적용됩니다.
Java에서라면 회원님의 풀이대로 앞에서는 3 뒤에서는 a가 4가 되어 7이 되는 것이 맞지만, C언어를 기준으로 한 ++a + ++a의 풀이는
a = a+1;
a = a+1;
a = a+a;
와 같이 식이 수행되기 전 모든 전치 연산자가 수행된 후 연산이 시작되기 때문에 그와 같은 결과가 출력됩니다.
----------------------
[3]
위와 동일합니다.
전치 연산자는 식 연산 전, 후치 연산자는 식 후가 됩니다.
다음과 같은 식과 동일하죠
c = c+1;
c = c+1;
a = c+c+c+c;
c = c+1;
c = c+1;
여기서 a의 값은 6+6+6+6이 되겠죠.
만약 java라면
a= 5+5+7+7이 됩니다.
첫 번째 ++c를 적용하여 c가 5가 되고, 다음 c는 후치연산이니 +1이 적용되지 않아 그대로 5, 세 번째 c는 앞의 후치연산과 자신의 전치연산을 합하여 7, 네 번째 c는 후치 연산이니 적용되지 않고 그대로 7을 사용하게 되므로 5+5+7+7이 되어 C언어와 동일한 결과가 나옵니다.
행복한 하루되세요 :)
-
관리자2020-04-06 11:26:05
안녕하세요 길벗수험서 운영팀입니다.
[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]
C언어에서는 전체 식의 수행 전, 후에 전치연산자와 후치 연산자가 적용됩니다.
Java에서라면 회원님의 풀이대로 앞에서는 3 뒤에서는 a가 4가 되어 7이 되는 것이 맞지만, C언어를 기준으로 한 ++a + ++a의 풀이는
a = a+1;
a = a+1;
a = a+a;
와 같이 식이 수행되기 전 모든 전치 연산자가 수행된 후 연산이 시작되기 때문에 그와 같은 결과가 출력됩니다.
----------------------
[3]
위와 동일합니다.
전치 연산자는 식 연산 전, 후치 연산자는 식 후가 됩니다.
다음과 같은 식과 동일하죠
c = c+1;
c = c+1;
a = c+c+c+c;
c = c+1;
c = c+1;
여기서 a의 값은 6+6+6+6이 되겠죠.
만약 java라면
a= 5+5+7+7이 됩니다.
첫 번째 ++c를 적용하여 c가 5가 되고, 다음 c는 후치연산이니 +1이 적용되지 않아 그대로 5, 세 번째 c는 앞의 후치연산과 자신의 전치연산을 합하여 7, 네 번째 c는 후치 연산이니 적용되지 않고 그대로 7을 사용하게 되므로 5+5+7+7이 되어 C언어와 동일한 결과가 나옵니다.
행복한 하루되세요 :)