- 채점
- 런타임 에러
- 런타임 에러 (IntegerOverflow)
IntegerOverflow
정수가 저장할 수 있는 가장 큰 값보다 더 큰 값, 또는 가장 작은 값보다 더 작은 값을 저장하려고 할 때 발생합니다. 다음과 같은 경우에 발생합니다.
소스 1. int
최댓값이 저장되어 있는 a
에 1을 더해 오버플로를 발생시키는 소스
이 소스를 실행하면 오류 없이 정상 종료됩니다. C++에서 오버플로가 발생했을 때는 Undefined Behavior이기 때문입니다.
의 이유로 IntegerOverflow가 나오는 이유는 다른 부분도 문제가 있는데, 그 오류가 발생하기 전에, 오버플로가 발생했기 때문입니다.
소스 2. IntegerOverflow와 OutOfBound가 발생하는 소스
소스 2는 런타임 에러가 나는 부분이 총 2개가 있고, 그 위치는 6번 줄과 9번 줄입니다. 런타임 에러가 발생하는 이유는 9번 줄이지만, 6번 줄의 런타임 에러가 먼저 감지되어, 이유는 IntegerOverflow가 됩니다.
IntegerOverflow가 발생한 경우에는 다른 부분에서 이 오버플로로 인한 문제가 있을 수도 있다는 생각으로 디버깅을 해보는 것이 좋습니다.