파게로그

size_t 본문

콤퓨타 왕기초/C

size_t

파게 2021. 3. 10. 02:09

부호 없는 정수형이지만 실제 데이터형은 아님

_t: typedef를 했다는 힌트

 - typedef는 다른 자료형에 별칭을 붙이는 것

 - 플랫폼에 따라 다른 자료형을 쓰기 위해서 size_t를 typedef한 것

 - ex. Clang Windows에서는...  64bit OS이면 unsigned __int64(64비트), 32bit OS이면 unsigned int(32비트)

 

(C89 표준)

- size_t의 크기는 명시되지 않음

- 단, 배열을 만들면 그 배열의 바이트 크기를 얻을 수 있다고 명시함

   -> size_t는 최소 그 정도는 담을 수 있는 크기(배열의 크기는.. 2^8-1은 너무 작고 최소 2^16-1=65535는 되어야 할 것 같음...)

 

(C99 표준)

최소 16비트 요구

 

(일반적으로)

unsinged int 사용

typedef unsigned int   size_t;

 

.. hw따라 뭔가를 표현하기 위한 최적의 비트수가 있다는 것... 하드웨어따라서 컴파일러가 알아서 해라...

 

 

 

용도

- 어떤 것의 크기를 나타내기 위해 사용

- 좋은 예: 반복문이나 배열에 접근할 때 사용

    - 반복문의 카운터 변수에 음수가 필요 없을 때

    - 배열의 경우 길이가 될 수 없으니

int int_array[30];

size_t i;

for (i=0; i<30; ++i) { int_array[i] = (int)i; }

 

 

 

size_t와 -1

.. C# string의 IndexOf() 함수는 문자를 못 찾으면 -1을 반환함

.. size_t를 가지고도 마찬가지 일을 할 수 있음

    이걸 size_t로 보면 최댓값. 왜? signed int -1과 unsigned int 4,294,967,295는 같은 비트패턴을 가짐(11...1)

 

 

size_t get_students_index(const char* name) {

  if (!condition) {

    return (size_t)-1;

  }

  return 올바른_인덱스;

}

'콤퓨타 왕기초 > C' 카테고리의 다른 글

switch-case문의 제약  (0) 2021.03.10
bool expression  (0) 2021.03.10
연산자  (0) 2021.03.10
C89(C90)에서의 변수 선언 위치  (0) 2021.03.09
열거형  (0) 2021.03.09
Comments