TYPE CONVERSION

형변환은 자동으로 맞춰지는 경우와 의도를 코드에 드러내야 하는 경우로 나뉜다

정수와 실수, 문자와 숫자가 섞이면 컴파일러가 타입을 맞춘다. 정보 손실이 보이면 암시적 변환에 맡기지 말고 캐스팅 의도를 명확히 적는다.

판단 흐름

작은 범위에서 큰 범위

`int`가 `double`로 올라가는 식의 승격은 대체로 안전한 암시적 변환이다.

큰 범위에서 작은 범위

`double`을 `int`에 넣으면 소수점이 잘릴 수 있으므로 손실을 확인한다.

연산 결과가 이상함

`int / int`는 정수 나눗셈이다. 평균 계산은 한쪽을 실수로 바꾼다.

C++ 캐스팅 도구

static_cast기본 타입 변환처럼 의도가 명확하고 일반적인 변환에 사용한다.
dynamic_cast상속 계층에서 런타임 타입 확인이 필요한 다운캐스팅에 사용한다.
const_castconst 속성을 제거하거나 추가할 때만 제한적으로 사용한다.
reinterpret_cast비트를 다른 타입으로 재해석하므로 일반 코드에서는 피하는 편이 안전하다.
중괄호 초기화`int x {3.14};`처럼 손실 가능 변환을 컴파일 단계에서 막는다.
가독성캐스팅은 결과보다 의도를 보여주기 위해 쓴다고 생각한다.
주의 지점C 스타일 캐스팅은 무엇을 허용했는지 흐려져 디버깅이 어려워진다.