타입 변환

형변환 종류

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

형변환 판단 순서

작은 범위에서 큰 범위

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

큰 범위에서 작은 범위

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

연산 결과가 이상함

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

C++ 캐스팅 도구

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