1월, 2020의 게시물 표시

C++에서 for문이 제대로 돌지 않는 현상?

이미지
동적배열의 크기만큼 for문을 돌리는 문제에서 디버깅하다 발견하게 되었다. 현상은 다음과 같다. 위는 프로그래머스 사이트에서 돌린 결과이고, 아래는 필자의 비쥬얼 스튜디오에서 돌린 결과이다. 의미는 같은데, 아래의 for문이 전혀 출력되지 않는 것을 볼 수 있다! 혹시나 싶어서, Java에서 이클립스 환경에서 돌려보았는데, 자바는 성공적으로 출력이 되었다. 어떤 조건일 때 출력이 정상적으로 되지 않을까 궁금했는데, i가 -이면 위와 같은 현상이 발생하였다. 글을 쓰다가, 원인을 찾던 중 size()의 자료형이 size_t 인 것을 발견하였다. 이는 C/C++에서 쓰이는 데이터 타입으로 자세한 내용은 위키에 있다.  https://namu.wiki/w/size_t 이 자료형은 언뜻 보면 int형과 같아보이는데, 사실은 unsigned 정수형이라는 것이다. (size_t는 '이론상 가장 큰 사이즈를 담을 수 있는 unsigned 데이터 타입'으로 정의) 따라서 int형으로 선언된 i와 unsigned 정수형인 size()와의 비교에서 오버플로우 현상이 나타나는 것이었다.