Primitive Types — Zig가 기본으로 제공하는 타입
Primitive Types — Zig가 기본으로 제공하는 타입
이제 Zig 언어가 처음부터 갖고 있는 **원시 타입(primitive types)**을 살펴볼게요. 별도 import 없이 바로 쓸 수 있는 내장 타입들을 표로 정리해 봤는데, 각 타입이 어떤 크기를 다루는지, C에서 무엇에 해당하는지가 핵심이에요. 어떤 것들은 이름만 봐도 짐작이 가지만, comptime_int처럼 생소하게 느껴지는 것도 있죠. 하나씩 훑어보며 익숙해져 봐요.
본문
아래 표는 Zig의 기본 타입을 타입(Type), C에서의 대응(C Equivalent), 설명(Description) 세 묶음으로 보여줘요. 코드와 식별자는 그대로 보존했으니 표에서 타입 이름을 직접 확인해 봐요.
| Type | C Equivalent | Description |
|---|---|---|
i8 |
int8_t |
8비트 부호 있는 정수(signed integer) |
u8 |
uint8_t |
8비트 부호 없는 정수(unsigned integer) |
i16 |
int16_t |
16비트 부호 있는 정수 |
u16 |
uint16_t |
16비트 부호 없는 정수 |
i32 |
int32_t |
32비트 부호 있는 정수 |
u32 |
uint32_t |
32비트 부호 없는 정수 |
i64 |
int64_t |
64비트 부호 있는 정수 |
u64 |
uint64_t |
64비트 부호 없는 정수 |
i128 |
__int128 |
128비트 부호 있는 정수 |
u128 |
unsigned __int128 |
128비트 부호 없는 정수 |
isize |
intptr_t, ssize_t |
포인터 크기의 부호 있는 정수 |
usize |
uintptr_t, size_t |
포인터 크기의 부호 없는 정수. #5185도 참고해요 |
c_char |
char |
C와 ABI 호환을 위한 타입 |
c_short |
short |
C와 ABI 호환을 위한 타입 |
c_ushort |
unsigned short |
C와 ABI 호환을 위한 타입 |
c_int |
int |
C와 ABI 호환을 위한 타입 |
c_uint |
unsigned int |
C와 ABI 호환을 위한 타입 |
c_long |
long |
C와 ABI 호환을 위한 타입 |
c_ulong |
unsigned long |
C와 ABI 호환을 위한 타입 |
c_longlong |
long long |
C와 ABI 호환을 위한 타입 |
c_ulonglong |
unsigned long long |
C와 ABI 호환을 위한 타입 |
c_longdouble |
long double |
C와 ABI 호환을 위한 타입 |
f16 |
_Float16 |
16비트 부동소수점(가수 10비트) IEEE-754-2008 binary16 |
f32 |
float |
32비트 부동소수점(가수 23비트) IEEE-754-2008 binary32 |
f64 |
double |
64비트 부동소수점(가수 52비트) IEEE-754-2008 binary64 |
f80 |
long double |
80비트 부동소수점(가수 64비트) IEEE-754-2008 80-bit 확장 정밀도 |
f128 |
_Float128 |
128비트 부동소수점(가수 112비트) IEEE-754-2008 binary128 |
bool |
bool |
true 또는 false |
anyopaque |
void |
타입이 지워진 포인터(type-erased pointers)에 쓰여요 |
noreturn |
(none) | break, continue, return, unreachable 그리고 while (true) {}의 타입 |
type |
(none) | 모든 타입의 타입 |
anyerror |
(none) | 에러 코드 |
comptime_int |
(none) | comptime에 알려진 값에만 허용돼요. 정수 리터럴의 타입 |
comptime_float |
(none) | comptime에 알려진 값에만 허용돼요. 부동소수점 리터럴의 타입 |
위 정수 타입들 외에도, i나 u 뒤에 숫자를 붙인 식별자로 임의 비트 폭의 정수를 참조할 수 있어요. 예를 들어 i7은 부호 있는 7비트 정수를 뜻해요. 정수 타입의 최대 허용 비트 폭은 65535예요.