-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
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
Soobak
2023.12.21
안녕하세요, 답변 도우미 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 부분에서 설명해주신 내용과 같은 내용이므로, 참고해보시면 도움이 되실 것 같습니다.
답변 1