더북(TheBook)

이러한 포함 관계를 엄격하게 정할 필요는 없다. 가령 intlong은 서로 다른 타입이지만 값의 범위는 동일하게 정의한 플랫폼이 많다. 부호 없는 타입 여섯 가지도 마찬가지다.

▲ 그림 5-2 부호 없는 타입의 포함 관계

반면, 산술이나 비교 연산에서 부호 없는 좁은 타입은 unsigned int가 아닌 signed int승격된다는 점에 주의한다.

부호 있는 타입과 부호 없는 타입의 범위를 정확히 비교하기는 쉽지 않다. 한 가지 확실한 점은 부호 없는 타입은 부호 있는 타입의 음수 값을 가질 수 없다는 것이다. 음이 아닌 값은 다음과 같은 등급에 따라 값의 포함 관계가 결정된다.

▲ 그림 5-3 음이 아닌 값의 포함 관계

다시 말해 해당 등급에서 부호 있는 타입의 음이 아닌 값은 부호 없는 타입에 포함된다. 요즘 나온 플랫폼은 이러한 포함 관계가 엄격하다. 부호 없는 타입은 부호 있는 타입에 포함되지 않는 값을 가진다. 예를 들어 흔히 signed int의 최댓값은 231 - 1 = 2,147,483,647이고, unsigned int의 최댓값은 232 - 1 = 4,294,967,295다.

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