conversion decision

형변환은 안전한 맞춤인지, 손실을 감수한 선택인지 나눈다

타입이 다른 값이 만나면 컴파일러가 자동으로 맞추기도 하지만, 값이 줄거나 의미가 바뀌면 프로그래머가 의도를 드러내야 합니다.

넓어지는 변환

int → double

표현 범위가 넓어져 값 손실이 거의 없으므로 암시적으로 일어난다.

좁아지는 변환

double → int

소수부가 잘리는 등 정보 손실이 생길 수 있어 주의가 필요하다.

의도 표시

static_cast<int>(x)

손실 가능성을 알고 선택했다는 신호를 코드에 남긴다.

자동으로 맡겨도 되는 경우
  • 정수와 실수 연산에서 정수가 실수로 승격된다.
  • 작은 정수 타입이 더 넓은 정수 타입으로 이동한다.
  • 함수 인자가 매개변수 타입으로 안전하게 맞춰진다.
직접 드러내야 하는 경우
  • 소수부나 범위가 줄어드는 변환이 필요하다.
  • 정수 나눗셈을 실수 나눗셈으로 바꾸고 싶다.
  • 포인터, const, 클래스 계층처럼 의미가 바뀔 수 있다.
형변환의 핵심 질문은 “컴파일러가 안전하게 맞춰도 되는가, 아니면 내가 손실을 감수한다고 써야 하는가”이다.