연산 순서를 생각하시면 됩니다.
14번과 32번 줄에 있는 연산자를 생각해보면 괄호연산이 가장 빨리되고,
그 다음으론 * / 가 순서대로 되겠죠.
14번줄부터 보면 제일 먼저 MAX를 (double)로 형변환 합니다.
그 다음 연산은 sum*100을 하겠죠. 이 때 sum과 100은 둘 다 int죠
sum*100 역시 int가 됩니다.
그 다음으론 sum*100 을 num과 / 연산 하겠네요.
sum*100은 위에서 말한대로 int고, num 역시 int 입니다.
sum*100/num 의 결과는 int가 됩니다.
몫만 남고 나머지(소수점)는 버려지겠네요.
이 이후에 (double)MAX를 만나므로, 이 때 형변환을 한다 하더라도
이미 버려진 소수점은 돌아오지 않습니다.
32번줄은 제일 먼저 sum을 (double)로 형변환 합니다.
그 다음에는 sum*100을 하지만, sum이 double이니
100이 double로 자동 형변환됩니다.
이후의 식들도 int의 값들이 다 double로 형변환 됩니다.
쉬운 예시를 하나 드립니다.
wnsgurl97 3년 전 1
결론적으로 보았을 때,
double형의 정수를 int형의 정수로 나누었을 때는 정답처리가 됬으나,
int형의 정수를 double형의 정수로 나누었을 때는 오답처리가 됬습니다.
혹시 이것에 대해서 이유를 아시는 분이 계시면 질문 왜 결과가 다른 것인지 여쭤보고 싶습니다!