크기나 수치를 표현하는 데 사용되는 데이터 타입으로, 주로 배열의 크기나 메모리 크기와 같은 크기 관련 값을 다룰 때 사용됩니다. size_t는 부호 없는 정수형(unsigned integer)으로, 매우 큰 값도 표현할 수 있고, 이식성이 높게 설계되어있습니다.
'크기', '용량' 또는 '길이'를 표현하기 위한 특별한 타입입니다.
예를 들어, 배열의 크기, 메모리 할당 크기, 파일 크기 등과 같은 값들을 다룰 때, size_t를 사용하면 크기와 관련된 값임을 명확하게 나타낼 수 있습니다. 이는 코드의 가독성을 높이고, 다른 사람들이 코드를 읽을 때 해당 값이 "크기"와 관련된 데이터임을 직관적으로 이해할 수 있게 해줍니다.
#include <iostream>
using namespace std;
int main() {
unsigned int value = -5;
cout << "unsigned int value : " << value << endl;
return 0;
}
결과값
unsigned int value : 4294967291
#include <iostream>
#include <cstddef> // size_t가 정의된 헤더
using namespace std;
int main() {
size_t value = -5;
cout << "size_t value : " << value << endl;
return 0;
}
결과값
size_t value : 18446744073709551611
대부분의 C++ 컴파일러에서는 size_t와 같은 부호 없는 정수 타입에 음수를 할당할 때 암시적으로 자동 변환을 수행하여 위와 같은 값이 출력됩니다. 하지만 일부 컴파일러는 경고를 출력하거나 오류를 발생시킬 수 있습니다.
unsigned int와 size_t 모두 음수를 할당할 경우 의도하지 않은 값이 만들어질 수 있으니 가급적 양수값만을 다루는 것이 안전합니다.
또한, 컴파일러에 따라 <cstddef> 헤더를 포함하지 않아도 컴파일러의 확장으로 인해 size_t를 사용할 수 있지만 컴파일러 간 호환성 문제와 이식성 보장을 위해 <cstddef>헤더를 포함하는 것을 권장합니다.