더북(TheBook)

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 intunsigned int 타입의 크기는 같지만, 각 타입의 모든 값은 다르게 표시한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.