작성
·
195
0
답변 1
2
음.. 0부터가 아닌 1부터 세셨기 때문에 1 차이가 발생한 것 같습니다.
(우선 오타인지는 모르겠으나 unsigned int의 최소값은 -2147483648 이 아닌 0입니다)
숫자를 증가하며 하나씩 센다고 생각하시면서 아래와 같이 생각해보세요.
1. 0~2,147,483,647 : 2,147,483,648개 숫자는 정상적으로 증가 (남은 숫자 : 2,147,483,647)
2. 오버플로우 발생 : -2,147,483,648(signed int의 최소값) 에서 부터 다시 증가
3. 남은 숫자 차례로 증가 : -2,147,483,648 + 2,147,483,647 = -1 까지 증가
따라서 오버플로우의 결과는 -1입니다.
혹시 추가로 궁금한 사항이 있다면 언제든 댓글 달아주세요.
감사합니다.