C 언어 기초
int a = 7, b = 2;
double x = a / b;
double y = (double)a / b;
printf("%.1f %.1f\n", x, y);정수끼리의 나눗셈을 포함하는 위의 코드를 실행했을 때의 출력으로 올바른 것은?
- A3.0 3.0
- B3.0 3.5
- C3.5 3.5
정답과 해설 보기
정답: B. 3.0 3.5
a / b는 int끼리의 나눗셈이므로 정수의 나눗셈이 되어, 소수점 이하를 버린 3이 됩니다. 그 3을 double인 x에 넣어도 3.0이 될 뿐이며, 버려진 0.5는 돌아오지 않습니다. y에서는 먼저 a를 double로 변환하고 있으므로(캐스트) b도 double로 변환되어 실수의 나눗셈이 되고, 3.5가 됩니다. 계산 방법은 대입할 곳의 형이 아니라 연산하는 값의 형으로 정해집니다.