본문 바로가기
TIL

[C++] vector.size()는 unsigned 이다.

by 독서왕뼝아리 2023. 3. 24.

 
vector v의 사이즈가 4이고 k가 10일 때 (v.size() - k > 0) 조건이 계속 참이 나왔다. 왜 그러나 (v.size() - k) 를 콘솔에 찍어보니 쓰레기 값이 나왔다.....
 
 
 
쓰레기 값을 30초 들여다보니 아차 싶더라.

 

 

v.size() 는 양수만 취급한다.

size가 음수일리는 없으니 signed 자료형으로 개발했나보다. C만든 사람들 꽤나 직관적이다.

 

 
unsigned : 양수만 표현 가능 (0 ~ 2^32-1)
signed : 맨 앞 비트로 양수/음수를 분별한다. (-2^31 ~ 2^31-1)
 
signed int가 기본형이라 너무 당연하게 v.size()가 음수 표현이 안 될 것이란 생각을 못했다.
 

 

 
 
바보..........