다음과 같은 상황을 한번 생각해보세요. 친구가 그림 8-2처럼 크기가 다른 컵 두 개를 가져왔습니다. 큰 컵에는 long, 작은 컵에는 int라고 적혀있네요. 친구가 long 컵에 있는 물을 int 컵에 담아 달라고 한다면 어떻게 해야 할까요?
우리는 long 컵에 물이 얼마나 들어있는지 모릅니다. 모르는 상태에서 그냥 옮겨 담았다가는 물이 넘칠 수도 있습니다. 이럴 때는 옮겨 담아도 좋을지 판단할 수 없겠죠? 컴파일러도 마찬가지입니다. 큰 자료형에 들어있는 것을 작은 자료형에 넣으려고 하면 컴파일러는 일단 에러를 발생시킵니다.
그림 8-2 | 큰 long 컵과 작은 int 컵
반대 상황도 생각해볼까요? 친구가 int 컵 안에 들어있는 물을 long 컵에 담아 달라고 합니다. 이번에는 컵에 물이 얼마나 있는지 생각하지 않고 그냥 담아도 되겠죠? 컴파일러도 마찬가지로 작은 자료형에 들어있는 값을 큰 자료형에 담을 때는 자연스럽게 담을 수 있습니다. 지금까지 설명한 것이 자료형의 형변환(casting)입니다.