형 변환

형 변환 손실 점검

암시적 변환은 편리하지만 범위 축소와 정밀도 손실을 숨길 수 있고, 명시적 변환은 의도를 코드에 드러냅니다.

승격

작은 타입을 더 큰 타입으로

char나 short가 int로 올라가 연산되는 것처럼 계산 편의를 위한 변환입니다.

char -> int
산술 변환

공통 타입으로 맞춤

int와 double을 함께 계산하면 더 넓은 표현을 가진 타입으로 변환됩니다.

int + double
명시 변환

의도를 코드로 표시

static_cast는 변환을 감추지 않고 읽는 사람에게 선택을 알려 줍니다.

static_cast<int>(x)
손실

범위와 소수부가 사라질 수 있음

double을 int로 바꾸면 소수부가 버려지고 큰 정수는 작은 타입에 담기지 않을 수 있습니다.

3.9 -> 3
방향좁아지는 변환인지 넓어지는 변환인지 먼저 구분합니다.
경고컴파일러 경고가 전달하는 손실 가능성을 무시하지 않습니다.
표현의도한 변환이라면 C 스타일 캐스트보다 C++ 캐스트로 이유를 드러냅니다.