파게로그
size_t 본문
부호 없는 정수형이지만 실제 데이터형은 아님
_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 |