iron1209   5년 전

다음과 같이 하면 오버플로우가 안되는게 정상인것 같아보이는데 출력은 오버플로우가 되서 나타납니다.

무엇이 문제인가요?

djm03178   5년 전

INT_MAX가 int형이고, 여기에 100을 더한 값 역시 int형입니다. 여기서 이미 오버플로우가 발생했기 때문에, 뒤늦게 long long으로 변환되어 a에 담기더라도 손실된 부분은 돌아오지 않습니다.

jung2381187   5년 전

INT_MAX와 100이 int형이기 때문에 덧셈 과정에서 이미 오버플로가 일어나버리고, 오버플로가 일어난 값이 a에 저장됩니다.

100을 100LL처럼 long long으로 선언하거나 (long long)INT_MAX로 캐스팅해주시면 됩니다.

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