• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

unsigned int in for loop

23.12.21 06:05 작성 조회수 155

1

for (unsigned int i = 9; i >= 0; --i) {cout << i << endl;}

 

5.7 강의 마지막에 선생님께서 이렇게 하면 오버플로가 발생할 수 있다고 하시는데 이건 왜 발생하나요? 0에서 멈추기 때문에 오버플로가 발생 안 할 것이라고 생각 들어서요...ㅠ

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2023.12.21

안녕하세요, 답변 도우미 Soobak 입니다.

 

unsinged int 자료형 때문입니다.

unsigned int 는 부호가 없는 정수이며, 음수 값을 가질 수 없습니다.
즉, 변수의 값은 항상 0 이상이어야 합니다.

for (unsigned int i = 9; i >= 0; --i)iunsigned int 형이기 때문에, i >= 0 이 항상 참이되며, i0 이 될 때 반복문이 멈추지 않고 계속 진행됩니다.
i0 일 때 --i 가 실행되면, i0 에서 1 을 빼게 되어 가장 큰 unsigned int 값으로 오버플로우가 발생할 수 있게 됩니다.

 

교수님께서 강의 5.5 반복문 while12:00 부분에서 설명해주신 내용과 같은 내용이므로, 참고해보시면 도움이 되실 것 같습니다.