doju   5년 전

C++에서 부호 있는 정수형의 오버플로우는 undefined behavior입니다. 요즘 컴파일러들은 착해서 보통 이런 동작을 시키면 우리가 예상하는 값을 반환해 주지만, 컴파일러가 언제든지 변심해서 로봇 혁명을 일으키는 프로그램을 만들 수 있음을 유념하고 오버플로우로 인해 나온 결괏값을 이용하려는 시도는 자제해야 합니다.

비슷한 문제가 다른 대회에서도 출제된 적이 있으나, 이 대회에서는 Java 코드를 제시했으며 Java에서 이 동작은 레퍼런스 문서에서 따로 언급해 줄 정도로 명확히 정의되어 있습니다.

개인적으로는 이 문제가 부호 없는(unsigned) 자료형만을 허용했다면 더 좋은 문제가 되었을 거라고 생각합니다.

startlink   5년 전

재채점했습니다.

댓글을 작성하려면 로그인해야 합니다.