인프런 커뮤니티 질문&답변
unsigned int in for loop
작성
·
353
1
for (unsigned int i = 9; i >= 0; --i) {cout << i << endl;}
5.7 강의 마지막에 선생님께서 이렇게 하면 오버플로가 발생할 수 있다고 하시는데 이건 왜 발생하나요? 0에서 멈추기 때문에 오버플로가 발생 안 할 것이라고 생각 들어서요...ㅠ
답변 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
unsinged int 자료형 때문입니다.
unsigned int 는 부호가 없는 정수이며, 음수 값을 가질 수 없습니다.
즉, 변수의 값은 항상 0 이상이어야 합니다.
for (unsigned int i = 9; i >= 0; --i) 는 i 가 unsigned int 형이기 때문에, i >= 0 이 항상 참이되며, i 가 0 이 될 때 반복문이 멈추지 않고 계속 진행됩니다.i 가 0 일 때 --i 가 실행되면, i 는 0 에서 1 을 빼게 되어 가장 큰 unsigned int 값으로 오버플로우가 발생할 수 있게 됩니다.
교수님께서 강의 5.5 반복문 while 의 12:00 부분에서 설명해주신 내용과 같은 내용이므로, 참고해보시면 도움이 되실 것 같습니다.





