C 언어 기초

int a = 7, b = 2;
double x = a / b;
double y = (double)a / b;
printf("%.1f %.1f\n", x, y);

정수끼리의 나눗셈을 포함하는 위의 코드를 실행했을 때의 출력으로 올바른 것은?

  1. A3.0 3.0
  2. B3.0 3.5
  3. 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가 됩니다. 계산 방법은 대입할 곳의 형이 아니라 연산하는 값의 형으로 정해집니다.

이 분야 연습하기 분야로 돌아가기

C 언어 기초의 다른 문제

  1. 전위와 후위 ++를 사용한 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  2. if 문의 조건에 =를 쓴 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  3. 레지스터 값 reg의 비트 2가 1인지를 조사할 생각으로 위의 코드를 작성했다. 실행했을 때의 결과로 올바른 것은?
  4. uint8_t는 8비트의 부호 없는 정수형이다. 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  5. uint8_t는 8비트의 부호 없는 정수형이다. x를 10번 증가시키는 위의 코드를 실행했을 때의 출력으로 올바른 것은?