[C++] size_t 와 unsigned int 의 차이

Minjeong Park·2021년 7월 15일
1

CPP

목록 보기
5/5

🤔 왜 unsigned int 대신 size_t를 쓸까?


정의부터 살펴보자! intbasic signed integer이고, C++ 표준으로 최소 16 bits wide를 가진다.
출처 : https://en.cppreference.com/w/cpp/language/types
std::size_t어떤 타입의 사이즈든지 나타낼 수 있는 충분한 bytes를 가진 unsigned integer이다.
intsize_t가 같은 width를 가진 때를 제외하면, size_t는 항상 int보다 더 많은 숫자를 저장할 수 있다. 게다가size_t모든 타입의 사이즈에 상응하는 용량을 저장할 수 있는 capacity를 가졌고, vectorarraysindex도 표현하기 쉽기 때문에 size_t를 사용한다. 즉, size_t를 사용하면, 본인이 나타낼 수 있는 의도한 size 또는 index를 보장받을 수 있기 때문에, size_tindexes를 표현하는 것이다.

'의도한 것을 보장 받을 수 있다.'는 개념에 대해 다시 얘기해보자. size_t는 32bit 운영체제에서 부호 없는 32비트 정수이고, 64bit 운영체제에선 부호 없는 64bit 정수의도한 바를 보장받을 수 있다.
하지만 unsigned int 또는 int는 64bit OS라고 해서 꼭 64bit 정수가 아닐 수 있다. 여전히 32bit일 수도 있다. 이게 size_tunsigned int형의 차이이다.

😉 그럼 언제 unsigned int를 쓰고 size_t를 써야할까?


아마 어떤 걸 써야할지 고민될 것이다. 다행스럽게도 C++ Core Guidelines에는 연산을 어떻게 다뤄야할지에 대해 일러주는 섹션이 있다! 들어가보면, int같은 signed types을 언제 써야할지도 나오고, size_t같은 unsigned types를 언제 써야할지도 나온다! 직접 찾아서 보도록 하자..

라고 말하긴 했지만, 찾아보니, 메모리나 문자열 등의 길이를 구할 때size_t를 사용한다고 한다. 위에서도 언급한 내용이긴 하다.


💡 번역 및 출처
출처1 : Christopher Di Bella 답변에 더 많은 이야기가 있으니 참고할 것!
출처2

그냥 단어 정리

  • be under the impression that : (보통 사실이 아닌데) …라고 믿다
  • at one point : 한 때
profile
아자아잣

0개의 댓글