3.14라는 값은 모든 이진 부동소수점 형식의 절대 정밀도로 나타낼 수 없지만, 컴파일러는 3.14에 가장 가까운 값으로 f1을 설정할 수 있다. double 타입 변수나 (리터럴이 아닌) 상수에서 float 타입이 변수로 초기화할 때 표현 가능한 모든 double 값들과 이들이 손실 없는 방식으로 변환할 수 있는지를 고려해야 한다.
double d; ... float f2 = {d}; // 축소 오류
두 타입 사이에 값을 축소하는 현상은 피차 마찬가지라는 점을 유의하라.
unsigned u3 = {3}; int i2 = {2}; unsigned u4 = {i2}; // 축소 오류: 음수를 가질 수 없다. int i3 = {u3}; //축소 오류:큰 값을 모두 나타낼 수 없다.
signed int와 unsigned int 타입의 크기는 같지만, 각 타입의 모든 값은 다르게 표시한다.