변수의 값이 실수 2.0 인것을 모두 고르시오 1. double a = 5/2; 2. int b = 4/2; 3. double c =(int)(5.0)(2.0); 여기서 실수 2.0 인것은 2번은 b=2 인데 정수 2는 실수 2.0으로 자동변환 된다고 배웠습니다 3번은 5.0/2.0 = 2.5 인데 (int) 으로 2인 정수만 캐스팅 하고 표기는 double로 인하여 2.0으로 됩니다. 그래서 답은 2,3 인듯한데 문제를 풀어보니 1,3번이 정답으로 인정이 됩니다. 왜 그럴까요? 혹시 제가 잘못 알고 있나요?
## double a = 5 / 2; 해당 수식은 우측의 나누셈부터 시작됩니다. 이를 차례로 나타내면 다음과 같습니다. ``` double a = 2; double a = 2.0; // 왼쪽 변수가 실수이므로, 정수를 실수로 자동 변환 ``` ## int b = 4/2; 위 수식 또한 마찬가지로 아래의 순서를 따릅니다. ``` int b = 2; // 우측 값과 좌측 변수가 모두 정수이므로 더 이상 변환되지 않음. ``` ## double c = (int) (5.0 / 2.0); 위 수식은 소괄호 안쪽 나눗셈이 먼저 연산되고, 다음 흐름을 따릅니다. ``` double c = (int) (2.5); double c = 2; // 2.5를 정수로 해석(캐스팅)하여, 소수점 이하가 버려짐 double c = 2.0; // 왼쪽 변수가 실수(double)형이므로, 2가 2.0으로 자동변환 됨. ```
감사합니다.