int main(void)
{
size_t i;
for(i = 0; i < 10 ; i++) {
printf("Hello world\n");
}
}
C언어를 공부하다 보면, 위처럼 size_t를 많이 보게 된다.
size_t를 여러가지 용도로 사용하는데, for문 안에 있는 인덱스를 표현하는 부분에도 많이 사용된다.
그렇다면 본론을 말하겠다. size_t 와 unsinged int의 차이는 무엇인가라고 말하면,
일단 unsigned의 개념이 뭔지 알아야한다.
1) unsigned int란 ?
부호 없는 정수를 말한다. 즉, - +가 없는 정수라는 것 (항상 양수)
1-1) singed int vs unsigned int 범위 비교 (참고)
unsinged int : 0 ~ 4,294,967,295 |
singed int : –2,147,483,648 ~ 2,147,483,647 |
2) 그렇다면 size_t는 무엇인가?
size_t는 부호없는 정수이나, 실제 데이터는 아니다.
_t는 typedef를 나타내며, 플랫폼에 따라 다른 자료형을 쓰기위해 size_t를 typedef한 것이다.
32비트 운영체제에서는 '부호없는 32비트 정수'
64비트 운영체제에서는 '부호없는 64비트 정수'
라고 해석하면 된다.
3) 요약
- size_t는 운영체제가 32비트면 항상 부호없는 32비트이고, 만약 운영체제가 64비트면 부호없는 64비트 정수
- unsigned int or int의 경우에는 운영체제가 32비트이여도 항상 32비트가 정수가 아닐 수 있으며, 64비트도 마찬가지