이 장에서 지금까지 소개한 내용은 모두 잘 정의된 동작이다. 그래서 이런 동작을 수행하는 동안에는 추상 상태 기계는 항상 잘 정의된 상태에 있게 된다. 하지만 부호 있는 산술 연산에 의해 이 상태가 깨질 수 있다. 따라서 꼭 필요한 경우가 아니라면 부호 있는 산술 연산은 사용하지 않는 것이 좋다. 참고로 프로그램이 정상 종료되지 않고 갑자기 꺼지는 것을 트랩(trap)C이라 한다.
TAKEAWAY 5.57 부호 있는 산술 연산에서 심각한 트랩이 발생할 수 있다.
부호 있는 타입에서 오버플로가 발생할 때 일어날 수 있는 현상 중 하나는 부정 연산(negation)의 효과가 발생하는 것이다. 앞에서 설명했듯이 INT_MAX는 부호 비트를 제외한 나머지 비트가 1이다. 이 값의 바로 다음 수는 INT_MIN이 된다. 즉, 부호 비트가 1이고 나머지가 0인 값이 된다. 이 값은 -INT_MAX와 다르다.Exs 15
TAKEAWAY 5.58 2의 보수 표현에서 INT_MIN < -INT_MAX다.
다르게 말하면 2의 보수 표현에서는 양의 값인 -INT_MIN은 경계를 벗어난다. 값이 INT_MAX보다 크기 때문이다.
Exs 15 INT_MIN+INT_MAX는 -1임을 증명해 보자.