예를 들어, 4바이트로 표현할 수 있는 숫자를 계산해 볼까요? 4바이트는 32비트이므로 양의 정수로만 표현할 수 있는 숫자는 4,294,967,296(=232)개 입니다. 그런데 모든 정수는 양수, 0과 음수까지 포함합니다. 따라서 음수까지 범위를 넓힌다면 32비트로 표현할 수 있는 정수의 범위는 4,294,967,926 / 2 = 2,147,483,648로 나누어, -2,147,483,648부터 2,147,483,647까지입니다. 다시 말해 이 범위를 넘어서는 정수는 int 자료형을 사용해서 저장할 수 없습니다.
만약 변수가 저장할 수 있는 범위를 넘어서는 수를 저장하면 어떻게 될까요? 이럴 경우 오버플로(overflow)가 발생했다고 합니다. 예를 들어 0~9까지만 저장할 수 있는 자료형이 있다고 가정하겠습니다. 이 자료형에 10을 저장하려고 하면 오버플로가 발생하여, 10은 저장하지 못하고 다시 처음 숫자인 0으로 되돌아가 저장됩니다. 즉, 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 0 → 1...과 같이 숫자가 반복된다고 생각하면 됩니다.
그림 2-9 | 0~9까지만 저장 가능한 자료형에 10은 못 들어감(오버플로의 예)